如何打破内容安全策略
How To Break 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是一个非常好的防御层,但它不应该是你唯一的防线。 尽管它不会涵盖所有内容,并且并非所有浏览器当前都支持它,但它是我可以用来确保我的应用程序和用户安全的额外安全层。
相关文章:
- 内容安全策略:页面's设置阻止加载资源
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 旋转木马;启用内容安全策略时无法工作
- Extjs、Chrome扩展和内容安全策略
- 内容安全策略指令:;脚本src'self'blob:文件系统:chrome扩展资源:“;获取是否时
- 内容安全策略:无法在Chrome扩展中加载Google API
- 手动加载JQuery而不触发内容安全策略
- chrome扩展的内容安全策略问题
- WebGL CORS:试图突破用户代理的安全策略
- 在 JavaScript 中跟踪安全策略权限
- 如何打破内容安全策略
- 内容安全策略 + 表单插件
- 跨站点 XMLHttpRequest 内容安全策略指令解决方法
- 内容安全策略阻止对 *://www.google.com/recaptcha/api 的请求
- 如何检测内容安全策略 (CSP)
- 内容安全策略不从本地主机加载文件
- 如何在浏览器 JS 控制台中包含脚本时覆盖内容安全策略
- 内容安全策略指令:“script-src 'self' 'unsafe-eval'”
- 如何在 Netbeans 轻型 Web 服务器中指定内容安全策略
- Chrome 扩展程序“拒绝加载脚本,因为它违反了以下内容安全策略指令”