我继承了一些最近被重复远程表单提交攻击的代码.
最初,我通过设置唯一的会话身份验证令牌(而不是会话ID)来实现一些保护.虽然我意识到这个特定的攻击不是CSRF,但我从这些帖子中调整了我的解决方案(尽管已过时).
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29
http://tyleregeto.com/a-guide-to-nonce
http://shiflett.org/articles/cross-site-request-forgeries
我还阅读了有关SO的现有帖子,例如实用的非基于图像的CAPTCHA方法?
但是,攻击者现在首先请求表单页面,启动有效会话,然后在以下POST请求中传递会话cookie.因此拥有有效的会话令牌.所以我失败了.
我需要采取一些额外的预防措施.如果可能的话,我想避免使用CAPTCHA(糟糕的用户体验)和JavaScript解决方案.我还考虑过引用者检查(可以伪造),蜜罐(隐藏字段),以及速率限制(可以通过限制来克服).这个攻击者是持久的.
话虽如此,那将是一个更强大的解决方案.
如果您的人员专门攻击您的页面,那么您需要找到使该攻击者与普通用户不同的原因.
如果他使用某些URL或文本或类似的东西来垃圾邮件 - 在提交后阻止它们.
你也可以隔离提交 - 不要让他们说5分钟.在这5分钟内,如果您收到来自同一IP的同一表格的其他提交 - 丢弃这两个帖子并阻止IP.
CAPTCHA是好的,如果你使用好的CAPTCHA,因为许多自定义的自制验证码现在由特制软件自动识别.
总结一下 - 您的问题不仅需要技术,还需要更多的社交解决方案,旨在消除机器人大师,而不是阻止机器人发布.