HTML, Excel, Word, SEOPHP курс для чайников ⇒ HTTP-Аутентификация

PHP для "чайников"

Инструменты
Выбираем IDE
Выбираем Web-сервер
Выбираем СУБД
Структура языка PHP
Первый шаг
Синтаксис
Типы данных
Переменные и константы
Операторы
Выражения
Управляющие структуры
Функции
Классы
Исключения
Ошибки
Массивы
Глобальные массивы
Cookies
Сессии
Загрузка файлов
Работа с файлами
Работа с файлами на диске
Работа с данными в файле
Пример управления файлами
Работа с базами данных
Подключение
Анализ результатов
Выполнение запросов
Отключение
Пример: отслеживание пользователей
Работа в сети
Отправка почты
Безопасность
HTTP-аутентификация
Защита логином и паролем
Автоматизация
Регулярные выражения в PHP
Интеграция
PHP и JavaScript



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-авторизация не всегда обеспечивает простоту и надёжность таких манипуляций.

 



В начало страницы



В начало страницы