Файл .htaccess
можно использовать для установки ограниченного доступа по паролю, к определенным папкам, файлам и группам файлов. Можно привести рабочий пример, и объяснить его содержимое:
AuthName "Protected area, need authorization"
AuthType Basic
AuthUserFile /home/t/test/.authfile
require valid-user
Данный файл нужно положить в директорию, на которую мы будем ставить пароль.
Директива AuthName покажет сообщение при запросе пароля, все сообщения необходимо писать в одну строчку, синтаксис директивы тривиален:
AuthName "SEE TEXT"
Директива AuthType выбирает тип аутентификации. Есть следующие типы: Basic или Digest. Второй может не поддерживаться некоторыми браузерами, поэтому не рекомендуется для использования.
AuthType Basic | Digest
AuthUserFile указывает на имя файла с паролями для аутентификации пользователей (пароли в этом файле будут шифрованными). Путь к файлу с паролями пишется относительно корня веб сервера Apache. Хранить файл с паролями надо в папке, доступ к которой закрыт для пользователей (лучше поместить этот файл за пределами вашего сайта).
Если у Вас установлена операционная система Windows, Вы можете подключится к серверу по SSH и воспользоваться утилитой htpasswd
Запустив htpasswd без параметров мы увидим:
host@user ~ # htpasswd
Usage:
htpasswd [-cmdps] passwordfile username
htpasswd -b[cmdps] passwordfile username password
-c Create a new file.
host@user ~ #
Я не буду рассматривать все параметры этой команды, вы можете сами прочитать подробности, запустив htpasswd в unix shell, или ознакомитьсяс соответствующей документации по Apache.
Итак, изначально у нас еще нет файла с паролями и нам нужно его создать:
host@user ~ # htpasswd -c authfile test1
New password:
Re-type new password
Adding password for user test1
host@user ~ #
После выполнения данной операции htpasswd создаст файл passwords, в котором окажется пользователь test1 и его пароль в зашифрованном виде:
host@user ~ $ cat .authfile
test1:zgco1KREjBY8M
host@user ~ $
А теперь мы хотим добавить еще одного пользователя. Так как файл с паролями у нас уже есть, мы просто не будем использовать ключ '-c' :
host@user ~ # htpasswd .authfile test2
New password:
Re-type new password:
Adding password for user test2
host@user ~ $ cat .authfile
test1:zgco1KREjBY8M
test2:eN3uA6t0kzV1c
host@user ~ $
Директива паролирования директорий Require определяет пользователей, которые могут получить доступ
Require USER_NAME | valid-user
Указывая valid-user, Вы разрешаете доступ всем пользователям, перечисленным в файле паролей.
Приведу пример для доступа определенных пользователей из файла с паролями .htpasswd
AuthName "Protected area, need authorization"
AuthType Basic
AuthUserFile /home/t/test/.authfile
require palexa vasa igor
Также, как и с запретом доступа по IP, здесь можно использовать расширение <Files>
. Ниже приведу два примера:
установка пароля на один определенный файл.
<Files "passwd.html">
AuthName "Protected area, need authorization"
AuthType Basic
AuthUserFile /home/t/test/.authfile
require valid-user
</Files>
установка пароля на группу файлов.
<Files "\.(key)$">
AuthName "Protected area, need authorization"
AuthType Basic
AuthUserFile /home/t/test/.authfile
require valid-user
</Files>
Важно помнить, что при таком ограничении доступа, пароли по каналам связи передаются в открытом виде и при некоторых обстоятельствах могут быть перехвачены не доброжелателями. Поэтому рекомендуется в целях безопасности предоставлять доступ к закрытым областям сайта через защищенное SSL-соединение.