Назад | Перейти на главную страницу

Остановите HTTP-запросы на публикацию с помощью NGINX перед открытием страницы входа в приложение WordPress

Поскольку боты отправляют запросы 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, и любой код проверки кода проверки также должен проверять наличие поля. Если вы добавляете капчи через плагин, я ожидаю, что плагин справится с этим случаем.