Когда-то я уже писал пост о том, как заблокировать админку сайта по IP адресу. Способ конечно великолепен, если ваш IP — статичный и работаете над сайтом вы только в одном месте (скажем только дома или только в офисе).
Лично я, мало того, что часто переезжаю, так и ко всему прочему могу поколдовать над сайтом в макдаке или мне может понадобится зайти в админку, когда я на улице или в путешествии. Короче говоря, способ блокировки по IP мне не подходит.
Но что тогда делать? Ведь хочется как-то ещё защитить админку. Да так, чтобы вся директория /wp-admin
была недоступна для посторонних.
Мне представляется хорошим вариантом поставить на сайте дополнительную авторизацию, используя связку .htaccess
+ .htpasswd
.
Что ещё более удобно, вы можете применять эту блокировку не только к админке, но и ко всему сайту, например, если ваш сайт находится на стадии тестирования и вы никому не хотите его показывать раньше времени. Вот как это будет выглядеть (для Google Chrome, в разных браузерах по-разному):
Весь процесс будет состоять из двух шагов. Приступим.
В первую очередь создаём файл .htaccess
в той директории сайта, которую хотим защитить паролем. Так как речь шла об админке WordPress, то создаем файл в папке /wp-admin
.
AuthType Basic #название аутентификации AuthName "Protected Area" #путь к файлу с пользователями и паролями .htpasswd AuthUserFile /vol5/home/truemisha/truemisha.ru/public_html/wp-admin/.htpasswd require valid-user
.htpasswd
). Для того, чтобы узнать его, используйте PHP функцию getcwd()
(Get Current Working Directory).Файл с пользователями и паролями вида пользователь:пароль
. Пароль должен быть представлен в зашифрованном виде.
Пример:
admin:$apr1$gidPSkjR$qvsL5fMNunK2T17DKSxtR/
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Отличный способ дополнительной защиты. Тоже пользуюсь htpasswd - и сама и клиентам рекомендую и настраиваю. Правда закрываю не весь каталог wp-admin, а только файл wp-login.php.
При такой блокировке также блокируется файл /wp-admin/admin-ajax.php , к которому могут обращаться плагины через js с лицевой части сайта (например, ajax-отправка формы).
Увы, да)
Один из вариантов — его можно инклудить через какой-нибудь файл, находящийся в корне сайта.
как инклудить
Функция PHP
include()
.Это ясно, а полный инклуд можно, если я хочу в файл темы function
Я не знаю, зачем вам его тащить в functions.php, ну да вот он:
А куда можно?
Зависит от ваших целей :)
Например в корне создаем
ajax.php
и оттуда инклудим. А через скрипты обращаемся именно кajax.php
.Какие скрипты? Извините за столь дотошные вопросы, просто я новичок в этом деле и мало, что понимаю
JavaScript )
еще бы могли подсказать, как можно разрешить доступ только к одному файлу (press-this.php)
Сходу сказать не могу к сожалению.
А если закрывать только wp-login.php, как это все будет выглядеть? :)
Думаю примерно так :)
Тестировал на локальном сервере. Вроде все получилось, закрыл только файл wp-login.php. Но при входе, я лишь единожды ввел логин и пароль и после этого окно не появляется. Потом снова удалил код сохранил, потом снова вставил перезаписал и снова один раз ввел логин и пароль и больше окно не появляется. Скажите так и должно быть или это так на локальном сервере так?
Да, браузер запоминает введённые данные и использует их до момента своего закрытия (вроде бы, поправьте меня кто-нибудь, если я не прав).
Если бы http-аутентификацию нужно было проходить на каждой странице это было бы... неудобно.
Тогда это надежно и еще удобно! Интересно... Если вход в админку мы скрываем путем защиты "wp-admin" и "wp-login" способом выше, а файл конфигураций "config.php" скрываем (путем переноса его на директорию выше). Тогда стоит ли ставить какие-то плагины для защиты? (login-lockdown интересует) есть ли смысл его оставлять или убрать его лучше? Или он несет дополнительную защиту? подскажите
Я не ставлю, придерживаюсь принципа "сильный пароль решает все проблемы".
login-lockdown конечно будет нести дополнительную защиту, если предположить, что кто-то проникнет через htpasswd-аутентификацию и начнёт долбиться вам в админку.
Спасибо за ответ! Вы используете "Subscribe to Comments" или другой плагин на подписку комментариев?
Не использую.
Приветствую! Что будет после обновления ВП? Придеться по новой настраивать или эти файлы сохраняться?
Привет!
Да, они сохранятся.
О! Отлично! А я почему-то думал что все сноситься, года ВП обновляется
Только файлы самого ВП :)
Век живи, век учись))) Буду знать, спасибо
в /wp-admin/ спрашивает пароль
в /wp-admin/wp-login.php не спрашивает
Почему такое может происходить?
А потому что wp-login.php находится вне той самой папки и на него не распространяется защита. Но войти всё равно без авторизации не удастся.
Действительно, войти нельзя.
Спасибо, Миша, за пояснение.
Можно после пути к файлу добавить
Require expr %{REQUEST_URI} =~ m#^/wp-admin/admin-ajax.php.*#
, тогда файл /wp-admin/admin-ajax.php будет попадать в исключения.Спасибо за дополнение! Да, разрешать доступ к
admin-ajax.php
это очень хорошая идея.Ещё можно добавить такой код:
Можно ли как то добавить в форму регистрации, что бы пользователь сам придумывал пароль, а не по емайлу?
Такого гайда у меня пока что нет, но возможно будет! Ну и я думаю, что есть готовые плагины для этой цели
Миша, здравствуйте!
а раньше в этой статье была ссылка на шифровальщик, я там шифровал и все работает по сей день.
а на еще один сайт понадобилось поставить авторизацию, нашел эту статью и ссылки нет уже.
пробовал другие шифровальщики из поиска, не срабатывает зашифрованный ими пароль.
Почему так? и каким шифровальщиком порекомендуете пользоваться?
Добрый день, что-то у меня похоже его нигде не осталось сейчас... от слова совсем, потому что я вроде и резервные копии почистить успел :) возможно как-то наберусь до обновления старых постов и поправлю всё