«

»

Фев 18 2014

Распечатать Запись

Конфликт Better WP Security и стандартной защиты при частом обращении к wp-admin

В последнее время блогом заниматься времени нет – много работы. Но его работоспособность стараюсь поддерживать. И вот столкнулся я с проблемой – не могу зайти в админку. Первая реакция паника, потом уже осознание проблемы.

Описание проблемы

Суть проблемы в конфликте плагина Better WP Security и базовой защиты блога от частого обращения к админке. Каждый из них старается обеспечить безопасность доступа к админке и позволяет зайти только по определенному URL и по другому не пускает. А URL эти у двух защитных систем различаются и в результате ни по одному из них зайти в административную панель сайта невозможно.

Судя по результатам поиска на просторах сети со стандартной защитой сталкивались многие. При попытке звойти в административную панель сайта вылезает такая картина:

Для доступа в административную панель Вашего сайта, пожалуйста, перейдите по ссылке ниже.После чего идет автоматический редирект на страницу вида <адрес сайта>/wp-login.php?pass=1.

С другой стороны в плагине Better WP Security есть настройка, которая позволяет менять адрес доступа к форме входа и делает недоступным прямой доступ к wp-login.php. Делается это записями в .htaccess следующего вида:

Несколько пояснений к коду выше:

  • Все “переменные” я обозначил русским тестом в круглых скобках. Всех их Better WP Security позволяет менять через интерфейс.
  • (вход для админа) – это относительная ссылка, по которой администратор блога сможет залогиниться.
  • (вход для пользователей) – это относительная ссылка, по которой посетители блога смогут залогиниться. Если по ней попробует войти администратор, то его просто не пустит=)
  • (регистрация) – это относительная ссылка, по которой посетителя перенаправляет на форму для регистрации.
  • (секретный ключ) – это некоторая секретная последовательность символов, которая используется самим плагином для реализации вышеописанного функционала. Кроме того, этот ключ можно использовать самому, если что-то сломалось, вручную перейдя по ссылке вида <адрес сайта>/wp-login.php?(секретный ключ)&redirect_to=/wp-admin/

Решение

Фикс проблемы в данном случае достаточно простой: надо подкорректировать записи в .htaccess, которые сделал Better WP Security (кому лень читать полностью промотайте до конца поста – там написано, что поправить).

Посмотрим внимательно на структуру фрагмента. Видите много строчек с RewriteCond? Это все условия для выполнения следующего за ними RewriteRule, которое перенаправляет на 404 страницу. Что же у нас происходит при попытке входа?

  1. Мы переходим по нашей кастомной ссылке <адрес сайта>/(вход для админа)
  2. В соответствии с правилами в .htaccess нас перекидывает на <адрес сайта>/wp-login.php?(секретный ключ)&redirect_to=/wp-admin/
  3. Вводим правильный логин/пароль и кликаем войти.
  4. Стандартная защита видит, что было много попыток доступа к админке и решает нас не пускать по неправильной с её точке зрения ссылке и перенаправляет на свою <адрес сайта>/wp-login.php?pass=1
  5. Мы опять вводим правильный логин/пароль и кликаем войти.
  6. И тут уже Better WP Security видит, что мы переходим к админке после неправильной ссылки логина и предлагает войти по своей аналогично пункту 2.

После этого круг замкнулся и мы по кругу начинаем вводить правильный логин/пароль по разным ссылкам для входа.

[important]Вид ссылки для входа <адрес сайта>/wp-login.php?(секретный ключ)&redirect_to=/wp-admin/&pass=1 устраивает обе системы защиты![/important]

Исправим ситуацию и запишем в .htaccess ссылку для входа правильную с точки зрения обеих систем защиты. А именно, меняем строчку:

на

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *