Наверное, вы когда-нибудь сталкивались с таким явлением как HTTP авторизация, давайте немного освежим нашу память, и вспомним – что это и где это дело может использоваться. Если вы тесно связаны с веб-индустрией, то с большой вероятностью вы в курсе, о чем идет речь, если нет ничего страшного, мы сейчас внесем ясность в этот вопрос.
Как известно среда веб – открытая среда, и в силу своей открытости возможность HTTP авторизации направлена на ограничение доступа к каким либо ресурсам на сервере. В качестве ресурса мы будем подразумевать какую-либо разделы либо обычную директорию на сайте. Давайте рассмотрим пример, как можно ограничить доступ к публичной папке, размещенной на сервере. Сделать это можно в два шага. Первый – нам необходимо сгенерировать файл .htpasswd, который будет хранить учетные записи для авторизации. Второй – прописать путь к файлу с учетными записями в .htaccess.
Данный пример актуален для веб-сервера Apache. В качестве операционной системы используется Linux CentOS 6.
Создаем файл .htpasswd
Создать файл .htpasswd можно разными способами, есть онлайн-генераторы, который могут вас избавить от возни с консолью сервера, вы просто вписываете свой логин и пароль, они выдают вам готовый файл. Но мы легких путей не ищем, и делаем это собственными руками в окне консоли сервера. Перейдите в директорию, куда вы хотите сохранить файл с паролями. По-хорошему рекомендуется сохранять данный файл вне публичной части сайта. Выполняем команду в консоли:
htpasswd -mbc .htpasswd username PassWord
username – вместо этого вам следует указать логин;
PassWord – указываете пароль.
В директории, где вы находились на момент запуска команды будет создан файл .htpasswd. Если вам необходимо сменить пару логин-пароль уже в существующем файле, вы можете выполнить команду:
htpasswd -mb .htpasswd username PassWord
Здесь список ключей из документации:
-c Create a new file.
-n Don’t update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
Прописывает путь к .htpasswd в файле .htaccess
После того как файл с учетной записью создан, необходимо прописать ключ к нему в файле .htaccess. Размещаем файл .htaccess в папку, для которой следует сделать авторизацию по HTTP. Указываем путь к файлу .htpasswd:
AuthType Basic AuthName "Private zone. Only for administrator!" AuthUserFile /home/sites/mysite.com/.htpasswd require valid-user
На самом деле всё довольно просто, давайте подытожим. Нужно понимать что данный метод авторизации существует довольно таки давно, и разумеется, он далеко от идеального по современным меркам информационной безопасности. По этой причине вам нужно понимать, что закрывая какие-либо разделы, подобный метод авторизации должен соответствовать уровню важности информации которую вы хотите обезопасить. Однако зачастую этого метода авторизации вполне бывает достаточно, скажем, вы решили временно закрыть какой-либо раздел, то этот метод вполне может сгодиться. На этом пока всё, всех успехов в труде!