HTTP аутентификация для сайта (.htaccess)


HTTP аутентификация позволяет ограничить доступ по http и https к содержимому любого каталога сайта или ко всему сайту. При обращении к каталогу через браузер пользователю будет выводиться диалог, запрашивающий логин и пароль. При неверном их вводе доступ предоставлен не будет — отобразится ошибка 403.



Ограничения можно задавать к веб-ресурсам или отдельным разделам сайтов.

Необходимые ограничения задаются в файле .htpasswd, который генерируется при помощи одноименной утилиты.


http аутентификация


При создании файла обращение к утилите производится с ключом -c (create) который указывает на необходимость создания файла, затем указываются учетные записи, которые необходимо создать.

Команда для редактирования существующего файла .htpasswd аналогична за исключением отсутствия необходимости указывать ключ -c.



Для задания ограничения доступа в консоли от имени пользователя root необходимо выполнить следующую команду:

htpasswd -c /home/sites/mysite.ru/.htpasswd username



Создастся файл, в котором будет задан логин пользователя username, имеющего доступ к каталогу /home/sites/mysite.ru/ — пароль создается автоматически.


cat /var/sites/company.ru/.htpasswd

username:rZPmUqrK678LIc



Таким же образом можно добавить дополнительных пользователей:

htpasswd /var/sites/company.ru/.htpasswd anotheruser



Создания файла .htpasswd для ограничения доступа не достаточно, веб-серверу нужно дать указание на необходимость его использования.


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

AuthType Basic

AuthName «Restricted Area»
AuthBasicProvider file
AuthUserFile /var/sites/company.ru/.htpasswd
Require valid-user



Возможные типы аутентификации:

Basic – базовый, данные передаются в открытом виде — чаще всего используется именно эта опция.

Digest – данные передаются в зашифрованном виде. Для создания digest-файлов может быть использована утилита htdigest (AuthType Digest);



Также в .htaccess задается расположение файла .htpasswd с паролями и условия прохождения http аутентификации.

Обычное значение — Require valid-user – обеспечит доступ любому пользователю, упоминающемуся в .htpasswd. Другой вариант — Require user nameuser — доступ получит только nameuser при условии ввода правильного пароля — остальные пользователи, упоминающиеся в .htpasswd содержимое закрытой при помощи формы ввода пароля страницы посмотреть не смогут.



HTTP аутентификация + ограничение доступа к сайту по IP-адресу


Также доступ можно разрешить или запретить по IP-адресу.  Ограничения задаются в файле .htaccess, который размещается в корне сайта или любого каталога сайта (доступ будет ограничен на том уровне на который распространяется действие директив .htaccess).



Order указывает в каком порядке будут обрабатываться правила — в примере доступ сначала запрещается для всего Интернета, затем разрешается для адреса 123.123.123.123.

Order deny,allow
Deny from all
Allow from 123.123.123.123



Можно закрыть сайт по маске не для конкретного адреса, а для диапазона адресов, например таким образом:

Order deny,allow
Deny from all
Allow from 123.123.123.0/24



Также файл .htaccess используется для задания редиректов и для добавления определенных заголовков. При неверном синтаксисе файла возможно возникновение серверной ошибки 500.

Доступ можно ограничить и в случае если на сервере используется Nginx, потребуется тот же файл .htpasswd и директива в конфигурационном файле.

Сказать спасибо