Авторизация с помощью .htaccess 


Авторизация с помощью .htaccess

Опубликовано

 Авторизация с помощью .htaccess

 

Не редко на сайтах можно встретить аутентификацию, реализованную с помощью конфигурационного файла .htaccess. Простота настроек и надежность, основные преимущества данного вида авторизации. 

Директивы файла . htaccess.

AuthName "Текст выводится в окне авторизации" 
AuthType Basic
AuthUserFile Полный путь/.htpasswd
require valid-user

AuthName – текст содержащийся в данной директиве, выводится в окне ввода пароля. Он должен быть написан в одну строку и заключен в двойные кавычки.

AuthType - типы аутентификации: Basic или Digest. Рекомендуется использовать первый, т.к. второй поддерживается не всеми браузерами.

AuthUserFile - полный путь к файлу с логинами и паролями, для аутентификации пользователей. Пароли содержаться в шифрованном виде. Рекомендуется хранить данный файл в папке, к которой нет доступа для пользователей, это необходимо, чтобы предотвратить кражу паролей.

require valid-user – директива предписывает, что к URL получают доступ только, пользователи, успешно прошедшие аутентификацию.

 

Где можно реализовать?

Авторизацию можно прикрутить к любой директории вашего сайта, будь то корень, либо папка из иерархии. Очень часто можно встретить защиту с помощью .htaccess, для входя в “Панель управления” сайтом. Также с помощью этой технологии можно ограничить доступ к папкам, где лежат конфиденциальные данные.

Итак, давайте создадим директорию с названием CMS (можете выбрать любое название). В ней будут находиться: файл конфигурации .htaccess и файл с паролями .htpasswd., а также все остальные файлы и папки, к которым вы хотите сделать ограниченный доступ.

 

Настройка файла .htaccess

Создайте с помощью обычного блокнота файл .htaccess (точка перед названием обязательна), в папке CMS, заполните его директивами указанными выше. Для заполнения директивы AuthUserFile необходимо указать полный путь к файлу с паролями .htpasswd, который находится в этой же папке.

Как узнать полный путь к файлу?

Полный путь к файлу, можно узнать с помощью функции phpinfo(). Результатом ее выполнения будет подробная таблица настроек веб-сервера.

Создайте файл info.php, с содержимым <?php phpinfo(); ?>, в директории CMS. Запустите файл через браузер. В полученной таблице, найдите переменную SCRIPT_FILENAME, которая содержит полный путь к файлу.

После получения нужных данных, обязательно удалите файл info.php, чтобы информация о настройках веб-сервера не стала общедоступной.

Полный путь к файлу. Результат выполнения функции phpinfo()

Рис 1. Полный путь к файлу. Результат выполнения функции phpinfo()

 

Скопируйте полученный путь, замените в нем имя файла, info.php на .htpasswd, и поместите его в директиву AuthUserFile.

AuthUserFile Z:/home/localhost/www/scripts/CMS/.htpasswd

Таким образом, готовый файл .htaccess, будет содержать следующие директивы:

AuthName "Authentication" 
AuthType Basic
AuthUserFile Z:/home/localhost/www/scripts/CMS/.htpasswd
require valid-user

 

Создание файла . htpasswd

Переходим к созданию файла с паролями . htpasswd, для этого воспользуемся утилитой htpasswd.exe. Работать с которой нужно через командную строку. Далее рассмотрены примеры работы с утилитой:

 

• Создать новый файл с паролями, назначить ему имя .htpasswd, задать шифрование паролей по алгоритму MD5 и добавить в него логин admin:

htpasswd -cm .htpasswd admin

-cm - ключи утилиты:

– указывает, что необходимо создать новый файл

-m –шифрует пароли по алгоритму MD5

.htpasswd – имя файла с паролями

admin – логин

Создание нового файла с паролями, утилитой htpasswd.exe

Рис. 2. Создание нового файла с паролями, утилитой htpasswd.exe

 

• Добавить в уже существующий файл с паролями нового пользователя. Для этого нужно в команде указать один ключ –m, ключ –c, опустить.

htpasswd -m .htpasswd user

Добавление в уже существующий файл с паролями нового пользователя, утилитой htpasswd.exe.

Рис. 3. Добавление в уже существующий файл с паролями нового пользователя, утилитой htpasswd.exe.

 

• Чтобы изменить пароль для существующего пользователя, используйте ту же команду, что и при добавлении.

htpasswd -m .htpasswd user

Изменение пароля для существующего пользователя, с помощью утилиты htpasswd.exe.

Рис 4. Изменение пароля для существующего пользователя, с помощью утилиты htpasswd.exe.

 

После создания файла с паролями, поместите его в директорию, путь к которой указан в директиве AuthUserFile файла .htaccess. (в нашем случае в папку CMS)

 

Доступ к данным авторизации, через переменные массива $_SERVER

После успешного прохождения аутентификации, логин и пароль, вбитые пользователем, помещаются в суперглобальный массив$_SERVER, который можно обрабатывать с помощью php скрипта.

  • $_SERVER["PHP_AUTH_USER"] – логин;
  • $_SERVER["PHP_AUTH_PW"] – пароль;  

Результат

Теперь если вы перейдете в браузере в папку, где лежит конфигурационный файл .htaccess, вы получите всплывающее окно, где нужно вбить логин и пароль. При успешной авторизации доступ к папке будет открыт.

Окно аутентификации.

Рис. 5. Окно аутентификации.

 

Подведем итоги:

  • С помощью конфигурационного файла .htaccess, можно ограничить доступ к любой директории вашего сайта;
  • Чтобы создать файл .htaccess воспользуйтесь обычным блокнотом;
  • Чтобы указать полный путь к файлу с паролями .htpasswd, в директиве AuthUserFile файла .htaccess, воспользуйтесь функцией phpinfo();
  • Для создания файла с паролями .htpasswd, воспользуйтесь утилитой htpasswd.exe;
  • Размещайте файл с паролями .htpasswd, в папке, к которой нет доступа для пользователей, чтобы предотвратить кражу паролей;
  • Доступ к данным авторизации осуществляется через переменные суперглобального массива $_SERVER: $_SERVER["PHP_AUTH_USER"] , $_SERVER["PHP_AUTH_PW"];