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

Security 同步器令牌模式:如何防止XSS和CSRF的组合?,security,xss,csrf,owasp,Security,Xss,Csrf,Owasp,我一直在研究OWASP建议以防止CSRF攻击() 现在,我不明白的是,这将如何防止结合XSS和CSRF攻击的攻击。假设我们有以下攻击场景: 攻击者能够执行存储的XSS攻击,因此每次用户访问页面时,攻击者在网站上插入的脚本都会被执行 此脚本将完全重新设计DOM,例如,攻击者的脚本将重新设计DOM,以便将此表单重新设计为添加具有管理员权限的用户的表单,而不是用户需要提供一些无关信息的原始表单。请注意,用户不会看到这一点,因为字段的标签将保持不变。只有职位会有所不同 攻击者知道此网站使用反CSRF令

我一直在研究OWASP建议以防止CSRF攻击()

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


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

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

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

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

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


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

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

    对。如果您的网站受到这种方式的攻击,那么它是XSS攻击,而不是CSRF攻击。CSRF仅仅意味着请求是“跨站点”发出的,而在您的示例中,请求是在同一个站点上的——只是脚本是“跨站点”的

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


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

    不是OWASP文章第5节中特别提到的。没有跨站点脚本漏洞?是的,这是正确的。我错过了那一部分。这不是在OWASP的第5篇文章中特别提到的吗。没有跨站点脚本漏洞?是的,这是正确的。我错过了那个部分。