我在亚马逊上托管了一个 spring web 应用程序,我正面临来自某些自动化机器的登录攻击。从我的日志中,很明显他们绕过了登录页面,并使用了类似的东西:
curl --data "j_username=xxx&j_password=yyy" http://www.mysecureurl.com/j_spring_security_check
我的问题是如何防止此类攻击。有没有一种方法可以通过某些 spring 配置阻止此类不是直接来自登录页面的登录?
当用户尝试从登录页面尝试时,我将实现进一步的安全措施,如验证码、3 次错误尝试后锁定等。
最佳答案
您可以实现 Cross-site Request Forgery (CSRF)- Nonce-Token 模式。
换句话说,
- 生成一个随机 token (每个用户都不同)。
- 将此 token 放入用户 session 中
- 将其添加为用户登录表单中的隐藏字段
- 如果您收到登录请求,则检查提交的 token 是否与 session 中的 token 匹配 - 如果不匹配,则向他们发送访问拒绝
顺便说一句:
您不仅可以将此模式用于您的登录页面,还可以用于所有更改服务器状态的请求。 (防止 CSRF 攻击)
关于java - 在 spring 应用程序中防止来自 curl/http post 的登录攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829642/