javascript - 如何破坏内容安全策略?

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

内容安全策略看起来确实很强大,但我认为它并不完美(而且我看到有消息称它是 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 是一个非常好的防御层,但它不应该是您唯一的防线。尽管它不会涵盖所有内容,并且当前并非所有浏览器都支持它,但它是我可以用来保证应用程序和用户安全的额外安全层。

关于javascript - 如何破坏内容安全策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35804925/

相关文章:

security - 请解释 Notepad++ 的 DLL 劫持是如何工作的

javascript - 为什么我们在将函数传递给指令时需要指定括号?

javascript - img.width 和 img.height 随机返回 0

javascript - 为什么 NVD3.js 线加条形图示例呈现两个图表而不是一个?

html - 用于下拉导航的CSS汉堡菜单

jquery - Bootstrap如何将页面分成三部分

javascript - 验证重定向是否来自特定域的最安全方法是什么?

ruby-on-rails - 如何跳过brakeman扫描过程+Rails的具体方法

javascript - 'react-scripts' 未被识别为内部或外部命令

javascript - 高效查找出现在指定 DOM 元素上的 DOM 元素