HTTP аутентификация на сайте

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

 

 

Доступ к сайту по паролю через .htaccess и .htpasswd

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

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

Доступ к сайту по паролю через htaccess

 

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

 

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

 

Ограничение доступа к сайту по 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 и директива в конфигурационном файле.