BotBan Защита сайта от ботов
Попробовать
Меню
BotBan Защита сайта от ботов
Тема оформления

Новости проекта

Плагин для WordPress 1.1.0: формы через REST и admin-ajax теперь под защитой

Плагин для WordPress стал проверять запросы без входа к REST и admin-ajax.php — через них отправляют заявки Contact Form 7, WPForms и формы Elementor. Обновить плагин нужно вручную, загрузкой архива из кабинета.

Мы проверили плагин на чистом WordPress 6.7 под PHP 8.5 и 7.4: прогнали все ответы сервиса, сбои связи, вход, комментарии, админку, REST и удаление плагина. Сайт ни разу не упал, но нашлось место, где защита не работала.

Что было не так. Плагин не проверял две точки, через которые работает большинство форм на WordPress:

  • REST (/wp-json/…) — так отправляет заявки Contact Form 7 и корзина WooCommerce на блоках;
  • admin-ajax.php и admin-post.php — так работают формы WPForms и Elementor.

Обе точки плагин пропускал как служебные, хотя посетитель без входа шлёт туда обычные заявки. Спам через такие формы доходил до сайта. Движок эти адреса проверяет как отправку формы — до него они просто не доезжали.

Что изменилось в 1.1.0. Запросы к REST и admin-ajax.php от посетителей без входа теперь проверяются, как и любая отправка формы. Если посетителю положена проверка, фоновая отправка формы со страницы сайта проходит, а обычная форма повторяется после проверки сама, без потери введённого. Вошедших пользователей — редактора, администратора, покупателя в личном кабинете — плагин по-прежнему не трогает.

Заодно поправили мелочи:

  • секретный ключ больше не выводится обратно на страницу настроек. Пустое поле при сохранении оставляет прежний ключ;
  • аварийно выключить защиту можно файлом wp-content/botban.off или строкой define('BOTBAN_OFF', true); в wp-config.php. Прежний файл в папке плагина пропадал при каждом обновлении;
  • правило для ловушки в robots.txt встаёт в группу User-agent: *;
  • при удалении плагин убирает свои настройки и кэш;
  • исправлено предупреждение PHP 8.1+ при сохранении настроек.

Как обновить. Модуль внутри плагина обновляется сам, а оболочка плагина — нет. Скачайте архив на странице сайта в кабинете, загрузите его в «Плагины → Добавить новый → Загрузить плагин» и подтвердите замену установленной версии. Ключи и настройки сохранятся.

Если на сайте стоит кэш страниц, страницы из кэша отдаются до запуска плагинов, и защита их не видит. Вход, комментарии и формы не кэшируются и защищены. Чтобы проверять всё, подключите модуль первой строкой index.php — инструкция там же, в кабинете.