我在亚马逊上有一个弹簧网络应用程序,我正面临一些自动化机器的登录攻击.从我的日志中可以看出,它们正在绕过登录页面,并且正在使用以下内容:
curl --data "j_username=xxx&j_password=yyy" http://www.mysecureurl.com/j_spring_security_check
我的问题是如何防止此类攻击.有没有办法可以阻止这些登录通过某些弹簧配置直接从登录页面进入?
然后,当用户从登录页面尝试时,我将实施进一步的安全措施,如验证码,锁定后3次错误尝试等.
最佳答案 您可以实现a
Cross-site Request Forgery(CSRF) – Nonce-Token模式.
换一种说法,
>生成随机令牌(每个用户不同).
>将此令牌放在用户会话中
>将其添加为用户登录表单中的隐藏字段
>如果您收到登录请求而不是检查提交的令牌是否与会话中的令牌匹配 – 如果没有,则向他们发送访问登录
BTW:
>您不仅可以将此模式用于登录页面,还可以用于更改服务器状态的所有请求. (防止CSRF-Attacs)
> Spring Security >= 3.2 has a build in CSRF-Prevetion