有趣的 Stack Overflow 问题“Cookie 是否保护令牌免受 XSS 攻击?” 由于过于宽泛而被关闭,但正如评论中提到的那样,有一个切实的问题是“如果我的反 CSRF 令牌受到 XSS 攻击的损害会发生什么?”;在我看来,这个问题的答案可能会提供信息,帮助人们对 Stack Overflow 上提出的问题形成意见。因此,我提出了这个有形的问题。
假设我们正在使用 Double Submit Cookies 方法(除非有更好的方法我不知道),并且我们将 JWT(例如,身份验证令牌)存储在 HttpOnly、安全 cookie 中。
以下安全堆栈交换页面是相关的:
- 即使存在 XSS 漏洞,CSRF 保护也能工作吗?
- localStorage vs. HTTP-Only Cookies + XSRF:在 XSS 方面哪个更好?
- 带有任何 CSRF 解决方案的 cookie 中的 JWT 是否与 localStorage 中的 JWT 一样容易受到 XSS 的攻击?
- 双重提交 Cookie 漏洞
- 为什么 cookie 被认为对 XSS 更安全?
- 为什么双重提交 Cookie 需要单独的 Cookie?
- 设置 httponly 是否可以防止使用 XSS 窃取会话?
- 是否有针对通过存储的 XSS 从同一服务器执行的 CSRF 的强大保护?
更新:
我一直在阅读有关反 CSRF 方法的更多信息,并在此 OWASP 页面上将 Double Submit Cookies 方法与替代同步器设计模式和加密令牌模式进行了比较,并指出就防御强度而言,它们可以按以下顺序排列:
- 同步器(即 CSRF)令牌
- 双重饼干防御
- 加密令牌模式
(OWASP 还声明 1. 需要会话状态,而 2. 和 3. 不需要服务器端状态。在题为“利用加密令牌模式”的文章的评论中讨论了加密令牌模式是否实际上是无状态的。也说过文章描述了 3. 解决的 1. 和 2. 的不足,显然没有引入新的安全问题或架构问题。因此,我不知道为什么 OWASP 在防御强度方面将其列为第三。也许是由于测试它在这个时间点是否经历过,因为它和双重提交 Cookie 都是相对较新的;也许是由于文章评论中关于无状态/有状态和重放攻击保护的讨论?如果有解释就好了那个顺序。)
无论如何...如果有人想在使用同步器令牌模式或加密令牌模式的替代假设下回答这个问题,那就太好了。