0

我一直在研究 OWASP 建议以防止 CSRF 攻击(https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)。

现在,我不明白这将如何防止结合 XSS 和 CSRF 攻击的攻击。假设我们有以下攻击场景:


  1. 攻击者能够执行存储型 XSS 攻击,因此攻击者在网站上插入的脚本在用户每次访问该页面时都会执行。

  2. 该脚本将完全重新设计 DOM,例如,攻击者的脚本将重新设计它,而不是用户需要提供一些不相关信息的原始表单,以便将该表单重新设计为添加具有管理员权限的用户的表单。请注意,用户不会看到这一点,因为字段的标签将保持不变。只有 POST 会有所不同。

  3. 攻击者知道该网站使用了反 CSRF 令牌。查看 OWASP 的建议:'(..)application 应该包含一个隐藏的输入参数,该参数具有通用名称,例如“CSRFToken”',攻击者知道大多数网站在页面的某处都会有一个带有此 id 的隐藏字段。

  4. 攻击者确保该字段的值也在虚假 POST 中提交。即使攻击者不知道这个隐藏字段的值,它也可以在 POST 中指定这个值应该与请求一起发送。这是可能的,因为用户的 DOM 已经被修改,请求将来自用户的浏览器,用户的 cookie 也会随请求一起发送。

  5. 用户提交表单,假用户被创建。


在我看来,仅使用 CSRF 令牌无法避免这种情况。或者是 XSS 攻击已被中和的同步器模式的隐含假设?

4

1 回答 1

4

或者是 XSS 攻击已被中和的同步器模式的隐含假设?

是的。如果您的网站以这种方式受到攻击,那么它是 XSS 攻击而不是 CSRF。CSRF 仅表示请求是“跨站点”发出的,而在您的示例中,请求位于同一站点上 - 它只是“跨站点”的脚本。

于 2013-09-23T10:29:47.040 回答