Поскольку боты отправляют запросы HTTP Post непосредственно на известную цель /wp-login.php, чтобы пропустить Captcha, можно ли будет проверить наличие настраиваемого ввода Post, такого как ввод Captcha или мое собственное поле ввода, а затем отклонить запрос, если нет?
Итак, используя https://www.nginx.com/resources/wiki/modules/form_input/
Я новичок в NGINX, но я представляю себе что-то вроде:
location /wp-login.php {
set_form_input $log; #input name for wp username
set_form_input $pwd; #input name for wp password
set_form_input $my_custom_field; #my custom input
if (!$my_custom_field){ #my custom input field not set
return 444;
}
#how to test if a variable in NGINX has been set?
}
Возможно ли что-то подобное?
Спасибо!
Как правило, подход к решению такого рода проблем состоит в том, чтобы выполнить проверки в коде серверного приложения - отсутствующий или недействительный код капчи приводит к ошибке авторизации. Однако в этом случае вы, вероятно, не захотите напрямую изменять Wordpress.
Вы можно проверять заголовки в Nginx, но я не вижу документации о том, как проверить поле формы - я думаю, что это выходит за рамки Nginx.
Но даже если бы это было возможно, было бы это безопасно? Вы можете отклонить запросы, в которых нет ввода капчи, но как узнать в Nginx, является ли капча верный? Злоумышленник может отправить в поле тарабарщину и пройти простую проверку if. Вы должны иметь возможность проверить правильность ввода кода, что, вероятно, означает запуск кода в Wordpress, и любой код проверки кода проверки также должен проверять наличие поля. Если вы добавляете капчи через плагин, я ожидаю, что плагин справится с этим случаем.