【发布时间】:2011-10-19 04:44:07
【问题描述】:
我继承了一些最近受到攻击的代码,其中攻击者发送了重复的远程表单提交。
我使用我为每个用户创建的会话身份验证令牌(不是会话 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
但是,它仍然觉得这里存在一些漏洞。虽然我知道没有什么是 100% 安全的,但我有一些问题:
- 难道潜在的攻击者不能简单地启动一个有效会话,然后在他们的每个请求中包含会话 ID(通过 cookie)吗?
- 似乎 nonce 会比 session token 更好。生成和跟踪 nonce 的最佳方式是什么?
- 我遇到了一些关于这些解决方案只是单一窗口的观点。有人可以详细说明这一点吗?
- 这些解决方案是否总是需要会话?还是可以在没有会话的情况下创建这些令牌? 更新,这个特定页面只是一个单页表单(无需登录)。因此,仅仅为了生成令牌而启动会话似乎有些过分。
- 我是否可以实施更简单的解决方案(不是 CAPTCHA)来防止这种不使用会话的特定攻击。
最后,我正在寻求更好的理解,以便实施更强大的解决方案。
【问题讨论】:
-
您能否提供一些在您的网站上进行的确切攻击模式?您对帖子的最新更新使您不太可能遭受简单的 CSRF 攻击——它们通常利用会话漏洞(它们甚至在 wiki 上被称为“会话骑行”)。看起来您的表单问题可以通过验证码轻松解决。
-
这是一种自动攻击,他们发送远程表单提交。验证码可能阻止了此类攻击。但是,我仍然对以更强大的方式保护表单感兴趣。理想情况下,不要使用验证码恶化用户体验。因此是会话令牌或随机数。
-
呃,这正是机器人所做的——它们会自动提交一些表单——这不是 CSRF 攻击。如果您发明了一些不涉及反向图灵测试的针对机器人的保护措施,您可能会在互联网上掀起一场革命:)祝您好运!
-
公平。如前所述,我仍然对会话令牌/随机数感兴趣,因为它们与 CSRF 保护有关。虽然我很欣赏讽刺,但您的 cmets 并不是很有帮助。
-
好吧,你问了一个关于 CSRF 攻击的问题,结果你甚至没有会话(这种类型的攻击依赖的主要内容)。我认为您应该删除这个问题并创建一个新问题,因为这根本没有意义。我认为这就是另一个人删除他的答案的原因。您应该阅读en.wikipedia.org/wiki/Cross-site_request_forgery 了解这种攻击的真正含义。
标签: php xss csrf csrf-protection