Защищаем сайт и директории паролем с помощью htaccess и htpasswd
Доступ по http и https к содержимому любого каталога на сервере можно ограничить с помощью htaccess и htpasswd. При обращении к каталогу через браузер пользователю будет выводиться диалог, запрашивающий логин и пароль. При неверном их вводе доступ предоставлен не будет — отобразится ошибка 403.
Данный способ достаточно прост, но в тоже время является очень надежным, при условии использования «нормального хостинга», так как данный тип защиты паролем через htaccess и htpasswd строится средствами сервера Apache.
Настройка защиты с помощью htaccess и htpasswd
Для работы нам необходимо несколько вещей:
- Доступ к сайту по FTP;
- Наличие прав на редактирование .htaccess
- Программа для генерации файлов htpasswd;
Для начала нам необходимо создать файл .htaccess. Проще всего это сделать с помощью обычного блокнота Windows. Нажимаем на рабочем столе правой кнопкой мыши, затем Создать — Текстовый документ. Открываем созданный текстовый документ, затем Файл — Сохранить как. Название меняем на .htaccess (точка перед названием обязательна!), тип файла «Все файлы» (иначе создастся .htaccess.txt).
Теперь нам необходимо создать файл с логинами и паролями для HTTP авторизации. Для этого распаковываем скаченный ранее файл htpasswd.exe и перемещаем его для удобства в корень диска C:.
Запускаем командную строку Пуск — Выполнить — cmd. Пишем cd C:/
, затем нажимаем Enter.
Теперь пишем следующую команду: htpasswd -cm .htpasswd admin
Где:
- htpasswd — наша скаченная программа
- -cm .htpasswd — параметр для создания файла .htpasswd и шифрования пароля с помощью MD5
- admin — имя пользователя, для которого создаем пароль
После выполнения команды необходимо ввести и подтвердить пароль для пользователя.
У нас создался файл .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.
Копируем все, кроме названия файла и вставляем в .htaccess. После обязательно удалите info.php с сервера!
Все, сохраняем файл .htaccess и загружаем на сервер (если редактировали на локальном компьютере).
Теперь, если попробовать зайти в папку на сервере, то будет выскакивать окошко с запросом логина и пароля. Сессия хранится до закрытия браузера.