在访问 WordPress 应用程序登录页面之前使用 NGINX 停止 HTTP Post 请求

在访问 WordPress 应用程序登录页面之前使用 NGINX 停止 HTTP Post 请求

由于机器人直接向已知目标 /wp-login.php 发送 HTTP Post 请求以跳过验证码,是否可以检查自定义 Post 输入(例如验证码输入或我自己的自定义输入字段),如果不存在则拒绝请求?

因此,使用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?
}

这样的事可能吗?

谢谢!

答案1

通常,解决此类问题的方法是在服务器端应用程序代码中进行检查 - 缺少或无效的验证码都会导致授权错误。但是,在这种情况下,您可能不想直接修改 Wordpress。

可以检查 Nginx 中的标头,但我没有看到任何关于如何检查表单字段的文档——我认为这超出了 Nginx 的范围。

但即使可以,那会安全吗?你可以拒绝没有验证码输入的请求,但在 Nginx 中你如何知道验证码是否正确的? 攻击者可以在字段中发送乱码并通过简​​单的 if 检查。您需要能够验证验证码是否正确,这可能意味着在 Wordpress 中运行代码,并且任何验证码验证代码也应该检查字段的存在。如果您通过插件添加验证码,我希望插件能够处理这种情况。

相关内容