Что такое .htpasswd

.htpasswd – это специальный файл для базового метода авторизации, который содержит пароль, работающий под управлением «Nginx» и «Apache»-сервера. 

Название файлов в операционных системах Unix построено таким образом, чтобы их обработка начинала происходить уже с этапа считывания имени. Так, символ точки вначале файла указывает на то, что атрибут файла .htpasswd имеет значение «скрытый». 

Это позволяет размещать любые файлы, начинающиеся с символа точки в открытых ftp-серверах и публичных каталогах – пользователи не смогу прочитать содержимое папки и получить к ней доступ.

Содержимое .htpasswd

Чтобы защитить любой каталог нам необходимо поместить в неё пару login:hash pass. Например: admin:Yshjc37jYgsp. 

admin – логин, хранится в файле .htpasswd в открытом виде
Yshjc37jYgsp – рассчитанная хэш-сумма пароля, т.е. не сам пароль 

Хэш пароля необходим для безопасности, поскольку в открытом доступе (plain text) хранить данные авторизации нежелательно. Однако, предусмотрено хранение пароля в открытом незащищённом виде. 

Генерация пароля утилитой htpasswd

В стандартный пакет Apache входит утилита для создания авторизационных данных для файла .htpasswd с возможностью добавлять новые записи и вносить изменения в уже существующие.

Для начала запускаем CMD. Для этого нажимаем сочетание «Win + R» или «Пуск» → «Выполнить», вводим CMD и нажимаем «Enter». 

После того, как мы открыли CMD, нам необходимо прописать путь к папке, где находится исполняемый файл htpasswd.exe. После данной операции мы пропишем специальный ключ с командой для генерации файла авторизации.

Вводим последовательность «htpasswd -cm .htpasswd admin» в окне CMD, далее ещё раз подтверждаем пароль. Через небольшой промежуток времени будет сгенерирован новый файл, находящийся в корневой папке утилиты.

Ключ С (create) – команда создания нового файла
Ключ M (MD5) – принудительное шифрование
admin – имя, отображающееся в окне авторизации 

Имя выходного файла .htpasswd может быть любым (например .pass) 

Защита директории паролем

Чтобы защитить папку нашим новым паролем нам необходимо поместить файл .htpasswd в нужную директорию и ограничить её файлом .htaccess с содержимым:

<Files .htpasswd>
   deny from all
</Files>

После всех описанных процедур в защищаемой папке должно оказаться 2 файла: .htpasswd и .htaccess. При попытке обращения к данной директории мы получим уведомление о необходимости пройти авторизацию.

16.10.2013