Защита админки и сайта при помощи дополнительной авторизации (.htaccess + .htpasswd)

Когда-то я уже писал пост о том, как заблокировать админку сайта по IP адресу. Способ конечно великолепен, если ваш IP — статичный и работаете над сайтом вы только в одном месте (скажем только дома или только в офисе).

Лично я, мало того, что часто переезжаю, так и ко всему прочему могу поколдовать над сайтом в макдаке или мне может понадобится зайти в админку, когда я на улице или в путешествии. Короче говоря, способ блокировки по IP мне не подходит.

Но что тогда делать? Ведь хочется как-то ещё защитить админку. Да так, чтобы вся директория /wp-admin была недоступна для посторонних.

Мне представляется хорошим вариантом поставить на сайте дополнительную авторизацию, используя связку .htaccess + .htpasswd.

Что ещё более удобно, вы можете применять эту блокировку не только к админке, но и ко всему сайту, например, если ваш сайт находится на стадии тестирования и вы никому не хотите его показывать раньше времени. Вот как это будет выглядеть (для Google Chrome, в разных браузерах по-разному):

защита сайта при помощи htpasswd
Всплывающее окно дополнительной авторизации на сайте.

Весь процесс будет состоять из двух шагов. Приступим.

.htaccess

В первую очередь создаём файл .htaccess в той директории сайта, которую хотим защитить паролем. Так как речь шла об админке WordPress, то создаем файл в папке /wp-admin.

AuthType Basic
#название аутентификации
AuthName "Protected Area"
#путь к файлу с пользователями и паролями .htpasswd
AuthUserFile /vol5/home/truemisha/truemisha.ru/public_html/wp-admin/.htpasswd
require valid-user
AuthName
Название авторизации. Сообщение будет отображаться в окошке ввода логина и пароля. Кроме того, для того, чтобы сохраненные пароли в браузерах сбросились, вы можете просто поменять это сообщение.
AuthUserFile
Абсолютный путь на сервере к файлу с логинами и паролями (как раз .htpasswd). Для того, чтобы узнать его, используйте PHP функцию getcwd() (Get Current Working Directory).

.htpasswd

Файл с пользователями и паролями вида пользователь:пароль. Пароль должен быть представлен в зашифрованном виде. Шифруем тут.

Пример:

admin:$apr1$gidPSkjR$qvsL5fMNunK2T17DKSxtR/
Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

По теме