Новости проекта
Плагин для 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 —
инструкция там же, в кабинете.