CSRF令牌和XSS漏洞

cen*_*cen 5 php security xss csrf web

假设我们在表单中使用CSRF令牌,但是碰巧我们的网站上存在一个未被注意的XSS漏洞。

据我了解,在这种情况下,CSRF令牌保护是完全无效的,因为攻击者可以通过XSS使用XMLHttpRequest收回它。

在这种情况下,是否有一种方法可以使CSRF保护有效,使其在攻击中幸存下来?或者我们的站点在完全采取CSRF之王之前应该首先具有安全的XSS保护吗?

在每个页面请求上设置一个新令牌,而不是在登录时设置令牌会解决吗?这带来了一次打开更多表单的问题,我不喜欢它。

小智 4

您的网站应该关闭您发现的所有 XSS 漏洞,否则 CSRF 毫无用处。然而,并行添加 CSRF 会很有用,这样一旦所有 XSS 错误都得到修复,站点的 csrf 保护也将发挥作用。

不幸的是,如果存在 XSS 漏洞,则无法防范 CSRF,因为通过 XSS 漏洞,攻击者可以读取您的网站并检查令牌(使用 JavaScript)。因此,无论您在何处以任何方式添加令牌,都可以找到该令牌,然后进行屏幕抓取

但是,如果您确保重要页面上没有 XSS 错误,然后添加 CSRF 保护,那么仍然存在安全漏洞,但将多个错误链接在一起所需的技能水平会更加困难。