HTTP-Аутентификация
Автор: | Артемьев Сергей Игоревич |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
HTTP-аутентификация (или HTTP Basic-авторизация) часто используется для защиты отдельных разделов сайта (например, раздела управления). Для огранизации защиты используются средства web-сервера. Мы рассмотрим настройку на примере Apache.
Сервер Apache при обращении к любому каталогу сервера автоматически проверяет наличие в нём файла .htaccess (имя файла начинается с точки). Это специальный файл, в котором можно задать настройки веб-сервера, которые он будет применять к данному каталогу и всем его подкаталогам. Большинство современных провайдеров разрешают использование файлов .htaccess, пусть и с некоторыми ограничениями. Узнать точнее о допустимых директивах .htaccess вы сможете из описания своего тарифного плана или от службы технической поддержки вашего провайдера.
Итак, рассмотрим конкретный пример - защиту одного из разделов сайта. Создадим в каталоге web-страниц сайта директорию members и сохраним в неё файл .htaccess следующего содержания:
DirectoryIndex index.htm members.php AuthName "только для зарегистрированных пользователей" AuthType Basic AuthUserFile /home/mySite/config/.htpasswd Require valid-user
Особенность файла .htaccess - он должен быть сохранён в формате Unix. Сделать это можно при помощи некоторых текстовых редакторов, например AkelPad.
Директивы файла .htaccess записываются в виде <имя_директивы><пробел><список_значений>. В данном случае мы использовали пять директив:
DirectoryIndex - задаёт страницу по-умолчанию. Можно перечислить несколько вариантов через запятую. Эта страница будет отображаться, когда пользователь вводит адрес без укзания файла (например, http://localhost/members/). В данном случае Apache будет искать сначала index.htm, затем members.php. Как только файл найден - он загружается, а поиск прекращается. Если ни одна страница не найдена - пользователь получит ошибку 404 "Документ не найден".
AuthName определяет приглашение, котрое пользователь увидит в окне ввода пароля. Значение должно быть заключено в двойные кавычки.
AuthType определяет режим авторизации. Возможных значений всего два: Basic и Digest. Метод Digest использует для защиты большое количество параметров сервера и клиента, обеспечивает более высокую защищённость, но в большинстве браузеров не поддерживается и используется только в специализированных системах. Для Интернет-пользователей применяется только режим Basic. Хотя он и обеспечивает доступ только по логину и паролю, зато его поддерживают практически все существующие браузеры.
Директива AuthUserFile задаёт местоположение файла с паролями. Здесь необходимо указать полный путь к файлу, начиная с корневого каталога сайта. В целях безопасности этот файл обычно располагают за пределами каталога web-страниц и скриптов (т.е. корневого каталога web-страниц).
Последний атрибут Require задаёт параметры допуска пользователей. Здесь можно задать через пробел имена пользователей из файла .htpasswd, которым разрешен доступ к каталогу. Если указать значение valid-user, то доступ будет предоставляться любому пользователю, данные которого есть в файле паролей.
Файл .htpasswd содержит список логинов и их зашифрованные пароли. Для его создания необходимо использовать специальную утилиту htpasswd.exe, которую можно бесплатно скачать в Интернете. Кроме того, эта утилита распространяется вместе с дистрибутивом Apache (подкаталог bin каталога установки).
Для создания нового файла и добавления в него пользователя admin c паролем TestPassword запустите эту утилиту со следующими параметрами:
htpasswd.exe -cb ".htpasswd" admin TestPassword
В том же каталоге, откуда вы запускали htaccess.exe появится файл .htpasswd, который необходимо скопировать на сервер.
Например, у вас на сервере есть следующая структура каталогов:
/home/mySite/ public_html/ members/ images/ styles/ config/
Здесь public_html - корневой каталог web-страниц, а /home/mySite/ - корневой каталог вашего сайта (его вы сможете увидеть только через FTP- или SSH-подключение).
Т.к. нам необходимо защитить только каталог members, то мы должны скопировать в него наш файл .htaccess, а файл с паролями - поместить в config.
Теперь в браузере набираем строку http://mySite/members и (если всё сделали правильно) - браузер попросит нас ввести логин и пароль. Вводим свои логин и пароль и получаем доступ к серверу, а если нажмём "Отмена" - получим сообщение о том, что сервер требует авторизации.
Напоследок небольшой штрих - запретим просмотр через браузер всех файлов, начинающихся с ".ht". Обычно такая защита включена для всего сервера, но подстраховаться никогда не помещает. Для этого сделаем ещё один файл .htaccess и поместим его в корневой каталог веб-страниц, предварительно вписав следующую директиву:
<Files ~ "^.ht"> Order allow,deny Deny from all </Files>
Более подробное описание директив .htaccess можно найти на официальном сайте Apache и просто с помощью поисковика, благо описаний и переводов официальной документации на русский язык уже сделано множество.
Не стоит злоупотреблять basic-авторизацией. Большинство пользователей уже привыкли быстро и легко регистрироваться на сайтах и управлять своими аккаунтами и паролями, а Basic-авторизация не всегда обеспечивает простоту и надёжность таких манипуляций.