需要抵御 XSS 攻击的 CSRF 保护
XSS 的一大危险是它通常可以绕过 CSRF 保护,从而执行受害者可以执行的任何操作。
如果即使存在 XSS 漏洞也可以阻止 CSRF,那么这似乎将大大减轻 XSS 可能造成的损害。由于 httpOnly,可能无法窃取 cookie,这会使攻击者遭受网络钓鱼攻击、污损和读取客户端可访问的数据。
但 OWASP 表示,一旦存在 XSS 漏洞,就不可能阻止 CSRF。
使用推荐人检查进行适当的 CSRF 保护?
即使存在 XSS 漏洞,是否应该可以使用引荐来源检查作为 CSRF 保护?
当然,域检查是不够的。但是,如果检查了确切的脚本,它不会起作用吗?
例如,如果从 发送请求http://example.com/add-user.php
,则要求引用者是http://example.com/add-user.php
。
这仍然意味着攻击者可以对该脚本执行 CSRF,如果该脚本包含 XSS 漏洞,但不应对同一域上的不同脚本进行 CSRF 攻击,因为无法通过 JavaScript 设置引荐来源网址。
- 推荐人检查可能并不总是实用的(例如,因为客户端不发送推荐人),但如果使用它们,是否可以以这种方式使用它们?
- 如果它们可以像这样使用,这种方法是否存在重大缺点?
- 如果没有,如果存在 XSS 漏洞,理论上是否存在有效的 CSRF 保护?