CFA LogoCFA Logo Computer
Новости Статьи Магазин Прайс-лист Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Индейское гостеприимство

Вячеслав БЕЛОВ viacheslavb@ua.fm

Блуждая по Интернету, то и дело убеждаешься в различии подходов к решению одних и тех же задач у нас и у иностранцев. Безусловно, многое тут замешано на национальном менталитете, общественном укладе и прочем тому подобном. Но нередки различия, связанные с уровнем грамотности вебмастеров, которые, изучив основы HTML, Java, CGI или PHP, пытаются с помощью этих инструментов решить все задачи сайтостроения, даже не подозревая, что существуют более простые и надежные методы.

Так, например, при необходимости авторизации посетителей начинающий вебмастер спешит написать собственный скрипт и создать специальную web-форму, не подозревая, что для этих целей можно использовать встроенную функцию авторизации web-сервера. При этом преимущества использования серверов Apache (которые поддерживают работу большинства отечественных и зарубежных сайтов) для этих целей очевидны. Во-первых, простота решения, во-вторых, гибкость настроек, в-третьих, сайт можно сделать максимально защищенным — уровень защиты Apache все-таки традиционно высок. И самое главное, ваш хостинг-пакет может даже не поддерживать работу с популярными скриптовыми языками (например, если вы пользуетесь ограниченным бесплатным хостингом), вам даже не обязательно разбираться в особенностях создания скриптов — безопасность сайта и сохранность файлов обеспечит сам сервер.

Чтобы можно было самостоятельно, без участия администратора произвести настройки сервера, нам предоставляется так называемый файл гибкой настройки —.htaccess (указывается всегда с точкой впереди, тем самым делается сообщение серверу о необходимости исполнения директив этого файла для произведения необходимых настроек). Впрочем, файл может называться как угодно, его название определяется параметром AccessFileName файла конфигурации доступа, но по умолчанию это именно .htaccess. С его помощью можно быстро переопределить многие настройки вашего сайта, назначить кодировку файлов, сделать редирект, описать соответствия расширений и типов файлов, обработать ошибки обращения к серверу и многое другое. Файл .htaccess влияет на файлы и папки того каталога, в котором установлен, отменяя действие принятых по умолчанию настроек хостинг-администратора. При этом сам этот файл недоступен пользователю из браузера и невидим владельцу сайта после загрузки последнего по FTP.

Работа сервера с .htaccess строится по принципу первичности обработки настроек, т.е. когда из браузера клиента поступает запрос в виде URL на считывание web-страницы, сервер сначала анализирует директорию на наличие .htaccess-файла. Сервер ищет .htaccess в главной директории, а затем начинает спускаться по дереву директорий, пока не дойдет до той папки, где находится запрашиваемая страница. Если сервер находит .htaccess-файл в какой-то папке, то в первую очередь выполняет те указания (директивы), которые даны в нем, и только после этого выдает запрашиваемую страницу из этой директории.

Среди используемых в .htaccess переменных можно выделить несколько основных групп:

AuthConfig: используется для настройки директив авторизации (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require и т.д.);

FileInfo: используется для настройки директив, управляющих видом документов (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority и т.д.);

Indexes: используется для директив, управляющих индексацией директорий (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName и т.д.)

Подробное описание каждой из переменных выходит за рамки этой небольшой статьи — тех, кто заинтересован в получении более полной информации по каждой из переменных настроек, я намерен переадресовать к руководству по Apach (http://www.apache.org/).

На этом мне хотелось бы закончить краткую теоретическую часть и перейти к более полезным практическим примерам. Но для начала хочу обратить ваше внимание на то, что для создания .htaccess-файла вам не потребуются какие-то специальные редакторы — вы с успехом можете воспользоваться стандартным Блокнотом, входящим в пакет Windows, или использовать любой другой текстовый редактор, поддерживающий работу с UNIX. Созданный файл необходимо сохранить, как .htaccess (обязательно с точкой, без дополнительных названий и расширений). Этот .htaccess-файл загружайте только в ту директорию, с которой он будет взаимодействовать или в которой находятся файлы, настройки по работе с которыми вы хотите произвести.

Среди самых востребованных функций файла гибкой настройки наибольший интерес представляет ограничение доступа (парольная защита) к директории или файлу. Эта функция полезна как для коммерческих, так и для некоммерческих сайтов.

В общих чертах структура .htaccess-файла для управления доступом может выглядеть следующим образом:

Где значение AuthUserFile определяет путь к файлу, содержащему логины и пароли доступа. Хочу обратить ваше внимание на то, что путь к .htpasswd следует указывать полный от корня сервера (например, С:/virtual/your-site.com/var/www/html/.htpasswd). Если вы пользуетесь бесплатным хостингом, то вряд ли сможете узнать этот путь у администратора сервера, хотя, возможно, эти данные описаны где-то в разделе вопросов и ответов или в хелпе. Пользователям же платного хостинга узнать этот путь у админа не составит никакого труда. AuthType задает тип авторизации для данной директории. Возможны значения Basic и Digest. Два этих типа авторизации отличаются своей защищенностью. При использовании Basic (используется в основном для зоны Интернета) авторизация проходит без шифрования передаваемых данных, а при использовании Digest вся информация шифруется по алгоритму MD5. Значение директивы AuthName выводится для посетителя в окне запроса пароля и может использоваться для пояснения запроса авторизации, предоставления кратких инструкций и т.п. Директива require valid-user разрешает доступ всем пользователям, указанным в файле .htpasswd. Вообще, директива require может настраиваться по-разному. Например, при значении require user пользователь1 пользователь2... доступ к директории получают только указанные пользователи. В случае неудачного обращения к защищенной области сервер выдаст ошибку 401 — отказ в доступе. Здесь вы можете указать текст, который будет отображаться в браузере, или создать специальный HTML-файл ошибки и переадресовать посетителя к этой странице. Наиболее очевидные ошибки, которые могут возникнуть при этом:

403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided);

404 — запрашиваемый документ (файл, директория) не найден;

500 — внутренняя ошибка сервера (к примеру, ошибка в синтаксисе файла .htaccess).

Чтобы пользователю при появлении этих ошибок показывались ваши собственные сообщения об ошибках, в .htaccess пишем:

Здесь errorXXX.html — любые файлы, соответствующие каждой из ошибок. Вы также можете использовать эти директивы и самостоятельно в .htaccess, если хотите создать только страницы ошибок (эта функция доступна на любом бесплатном или платном сервере).

Если же вам требуется сделать паролированный доступ только к одному файлу (например, к zip-архиву или продаваемой программе), .htaccess будет выглядеть следующим образом:

где <Files название>…</Files> — указание на конкретный файл. Таким же образом можно защитить субдиректории.

Как вы уже заметили, в обоих примерах есть ссылка на файл базы данных паролей —.htpasswd. Этот файл содержит информацию о логинах и паролях пользователей, которым разрешен доступ к данной директории (файлу, группе файлов). Данные, хранящиеся в этом файле, состоят из логина и зашифрованного пароля, разделенных между собой двоеточием (например, если и логин, и пароль — «тест», то в .htpasswd это будет выглядеть так: test:teH0wLIpW0gyQ). Хотя .htpasswd — это обычный текстовый файл, для работы с ним есть специальная утилита — ее вариант для Unix называется htpasswd. Если по условиям хостинга доступ к этой утилите на сервере вам запрещен, то вам не обойтись без специального скрипта, создающего пароли, или утилиты, которую можно установить на домашний компьютер (см. например, http://www.biz-secrets.com/htpas.zip).

Существует еще один метод ограничения доступа. Он заключается в перечислении IP-адресов, которым запрещен или разрешен доступ. Делается это с помощью директив allow или deny. Например, в .htaccess можно указать:

Данный пример построен на директиве deny (с английского — «отказывать»). Фраза deny from all запрещает доступ всем, кроме обозначенного (выражение allow from) адреса IP — 127.0.0.0. В этом случае все пользователи будут получать сообщение о запрете доступа 403 Forbidden, кроме пользователя с адресом 127.0.0.0, который сможет зайти в данный ресурс. Весьма полезная возможность при отладке работы сайта, просмотра своих трудов через браузер и т.п. Запретив доступ отовсюду, вы можете оставить доступ только себе и, возможно, еще кому-нибудь из избранных. Параметры allow from могут содержать выражения all или ip — адрес, часть доменного имени, часть IP-адреса с 1 по 3 байт, характеризующие, например, подсеть. Так, вместо allow from 127.0.0.0 можно указать allow from .your-site.com, тогда в защищенную директорию можно будет зайти только по ссылке с указанного URL. Этот очень ценный синтаксис, как нельзя лучше подходит для коммерческих сайтов. Так, например, если после приема денег через webmoney вы хотите отправить человека на специальную страницу своего сайта, где он сможет скачать программу или пароль, и при этом обезопасить эту страницу от случайных посещений и воровства ценных ресурсов, вы можете указать в .htaccess:allow from merchant.webmoney.ru. В этом случае страница будет доступна только тем, кто произвел оплату через Webmoney, и кого сервер после оплаты перенаправил к вам на сайт.

Приблизительно так же действует директива allow (с английского — «позволять»), только с точностью до наоборот. Например, такое выражение:

разрешит доступ всем, кроме посетителя с указанным IP. Эта функция не менее полезна и позволяет ограничить доступ всякого рода нарушителям порядка, установленного на сайте, в форуме и т.п. Обратите внимание, что в отличие от предыдущего примера синтаксис тут начинается с фразы order allow, deny, которая буквально обозначает «сначала разрешить, потом запретить». В этом случае пользователю 127.0.0.0 строкой allow from all сначала разрешится доступ, а потом будет запрещен следующей строкой. Если же будет использоваться Order deny, allow, как в предыдущем случае, то пользователю сначала будет разрешен доступ, а потом запретить его уже нельзя будет, и он спокойно пройдет внутрь, хотя он не должен этого делать.

Среди других не менее полезных возможностей файла гибкой настройки можно назвать индивидуальный редирект. Так, например, можно настроить показ разных страниц посетителям с разными IP. Например, так можно организовать перенаправление посетителя с ip адресом 127.0.0.0 на специально разработанную для него страницу mypage.html:

Так же можно организовать перенаправление посетителя при запросе определенных страниц. Эта функция более чем полезна при организации защиты от сетевых вирусов и сканеров. Так, если кто-то попытается запросить папку scripts на вашем сайте, благодаря специальной директиве он будет перенаправлен на сайт Microsoft:

Иногда возникает необходимость сокрытия адресов страниц. Тогда надо положить в директорию с вашим проектом файл .htaccess, в котором указать лишь одну директиву Options –Indexes. При этом при посещении любой из страниц сайта (или директории) в браузере будет отображаться только адрес главной страницы.

Существует еще директива IndexIgnore, которая позволяет управлять выводом содержимого каталога в том случае, если index.html или файл, его заменяющий, не найден. По умолчанию в этом случае Апач выдаст содержимое каталога, однако, некоторые вебмастеры пытаются скрыть содержимое директории от посторонних глаз. Чтобы это сделать, необходимо в .htaccess указать IndexIgnore *.

Вообще, Апач предоставляет много различных возможностей для работы с Index’ами. Так, DirectoryIndex отвечает за переопределение файла по умолчанию (индексный или загрузочный файл). Данная директива задает имя первого файла, который будет открываться при обращении к вашему web-серверу. Чаще всего данный файл называется index.html. Однако иногда существуют необходимость задать другой начальный файл. К примеру, если у вас динамический контент, это может быть файл index.php, index.shtml или вообще что-то типа something.php и hello_world.phtml. Если надо, можно указать несколько таких файлов, разделяя их пробелом:

В этом случае сервер будет искать среди указанных названий существующий файл. Например, если сервер не нашел index.php, то запустит something.shtml, если не найдет и его, то обратится к /cgi-bin/file.cgi.

Итак, в этой статье я раскрыл вам некоторые тайны использования файла гибкой настройки. Это лишь небольшая часть возможностей, которые предоставляет каждому вебмастеру сервер Unix. Всем же, кто заинтересован узнать больше о .htaccess, я рекомендую обратить свои взоры к руководству по Apach или найти ответы на свои вопросы на многочисленных сайтах, посвященных этому вопросу.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov