我想知道规范的引用: (https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html)
为了获得最大的好处,作者需要将所有内联脚本和样式移动到外部,例如外部脚本,因为用户代理无法确定攻击者是否注入了内联脚本。
采购所有内联脚本是一项耗时的任务。
我的问题是从安全的角度来看。通过将所有内联脚本(例如JavaScript)提取到外部源来真正获得任何安全性好处吗?
谢谢
答案 0 :(得分:6)
关键部分是
用户代理无法确定攻击者是否注入了内联脚本。
为了提供保护,CSP必须防止攻击者控制的子字符串导致代码运行。由于用户代理不知道HTML的哪些部分是由不受信任的输入指定的,哪些部分来自受信任的开发人员编写的模板,因此必须假设最坏的情况 - 任何属性或元素都可以由攻击者控制。
通过将所有内联脚本(例如JavaScript)提取到外部源,您真的可以获得任何安全性好处吗?
没有。提取要运行的脚本不会带来任何安全性好处,它只允许您在使用CSP时运行所需的脚本。
安全优势来自于能够调用浏览器的HTML解析器而不会无意中执行滥用域权限或窃取机密的脚本。