如何打破内容安全策略

How To Break Content Security Policy?

本文关键字:安全策略 何打破      更新时间:2023-09-26

内容安全策略看起来非常强大,但我认为它并不完美(而且我见过消息来源将其称为XSS的"部分"预防)。我的问题是:它不能阻止什么样的XSS攻击?

并非所有浏览器都实现了它,因此使用不受支持的浏览器的用户不提供任何保护。

http://caniuse.com/#search=csp

即使在支持的浏览器上,除非内容安全策略是禁用所有JavaScript(内联,内部/外部域),否则它仍然会为可以运行JavaScript的区域保持开放。 这意味着,如果任何恶意JavaScript可以进入这些区域,那么内容安全策略将不会阻止XSS的发生。

CSP 不会停止 XSS 的一些示例:

  • 如果应用程序使用内联(在页面上)JavaScript,并且CSP策略允许它。 如果将未编码/未经验证/恶意的值放入页面中,则浏览器将运行恶意JavaScript,就像运行意图JavaScript一样。 (目前 ASP.Net Web 窗体应用需要 JavaScript 才能在页面上运行,因此显示的任何恶意输入都将由浏览器执行。
  • 如果您正在为应用程序动态创建 JS 文件,并且未编码/未经验证/恶意的值插入到该文件中,则会导致 XSS 漏洞。
  • 如果您通过http而不是https发送页面和/或JavaScript文件,则MITM攻击可以通过网络修改值。
  • 如果您从第三方域加载 JavaScript 文件并且它们的安全性受到损害,则恶意脚本可能会发送到您的应用程序,而不是最初预期的脚本(想想 CDN)。

这些只是我能想到的一些例子。

其中一些问题看起来可以通过使用 CSP 2 级指令来缓解,但对它们的支持有限。

简而言之,CSP是一个非常好的防御层,但它不应该是你唯一的防线。 尽管它不会涵盖所有内容,并且并非所有浏览器当前都支持它,但它是我可以用来确保我的应用程序和用户安全的额外安全层。