如何打破内容安全政策?

时间:2016-03-04 19:52:58

标签: javascript html security http-headers content-security-policy

内容安全政策似乎非常强大,但我认为它并不完美(我已经看到将其称为XSS的“部分”预防的来源)。我的问题是:它不会阻止什么样的XSS攻击?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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

简而言之,CSP是一个非常好的防守层,但它不应该是你唯一的防线。虽然它不会覆盖所有内容,也不会涵盖当前所有支持它的浏览器,但它是我可以用来保护我的应用程序和用户安全的附加安全层。