首页 文章

同步器令牌模式:它如何阻止XSS和CSRF的组合?

提问于
浏览
0

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

现在,我不明白这是如何防止XSS和CSRF攻击相结合的攻击 . 假设我们有以下攻击情形:


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

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

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

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

  • 用户提交表单,并创建假用户 .


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

1 回答

  • 3

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

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

相关问题