Защищаем сайт и директории паролем с помощью htaccess и htpasswd

http authentification

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

Данный способ достаточно прост, но в тоже время является очень надежным, при условии использования «нормального хостинга», так как данный тип защиты паролем через htaccess и htpasswd строится средствами сервера Apache.

Настройка защиты с помощью htaccess и htpasswd

Для работы нам необходимо несколько вещей:

Для начала нам необходимо создать файл .htaccess. Проще всего это сделать с помощью обычного блокнота Windows. Нажимаем на рабочем столе правой кнопкой мыши, затем Создать — Текстовый документ. Открываем созданный текстовый документ, затем Файл — Сохранить как. Название меняем на .htaccess (точка перед названием обязательна!), тип файла «Все файлы» (иначе создастся .htaccess.txt).

Создание .htaccess

Теперь нам необходимо создать файл с логинами и паролями для HTTP авторизации. Для этого распаковываем скаченный ранее файл htpasswd.exe и перемещаем его для удобства в корень диска C:.

Запускаем командную строку Пуск — Выполнить — cmd. Пишем cd C:/, затем нажимаем Enter.

Теперь пишем следующую команду: htpasswd -cm .htpasswd admin

Где:

  • htpasswd — наша скаченная программа
  • -cm .htpasswd — параметр для создания файла .htpasswd и шифрования пароля с помощью MD5
  • admin — имя пользователя, для которого создаем пароль

После выполнения команды необходимо ввести и подтвердить пароль для пользователя.

Создание .htpasswd

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

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

.htaccess загружаем в директорию, которую необходимо защитить (будут автоматически защищены все подпапки), а .htpasswd рекомендуется загружать в другую директорию.

После того, как вы загрузили файлы на сервер по FTP, необходимо отредактировать файл .htaccess. Можно сделать это прямо на сервере, либо на компьютере через блокнот и потом снова загрузить на сервер. Пишем в файл следующие строки:

AuthType Basic
AuthName "Private zone"
AuthUserFile /home/u304720/***.ru/www/adm/.htpasswd
require valid-user
<Files .htpasswd> 
   deny from all
</Files>

AuthUserFile /home/u304720/***.ru/www/adm/.htpasswd — здесь указывается относительный путь до нашего файла .htpasswd. Если вы его не знаете, то его можно узнать через phpinfo().

Для этого создаем файл, например, info.php. Пишем в него следующий код:

<?

phpinfo();

?>

Сохраняем файл и загружаем в директорию, где лежит .htpasswd. Заходим по адресу вашего сайта, например, https://pogrommist.ru/adm/info.php и ищем строку «SCRIPT_FILENAME». В ней отображается абсолютный путь до файла info.php.

phpinfo

Копируем все, кроме названия файла и вставляем в .htaccess. После обязательно удалите info.php с сервера!

Все, сохраняем файл .htaccess и загружаем на сервер (если редактировали на локальном компьютере).

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

Теперь, если попробовать зайти в папку на сервере, то будет выскакивать окошко с запросом логина и пароля. Сессия хранится до закрытия браузера.