如果声明了散列,Chrome 是否应该忽略 unsafe-inline 指令?
Is Chrome supposed to ignore the unsafe-inline directive if a hash is declared?
鉴于以下情况:
"Content-Security-Policy" value="
default-src 'none';
script-src 'unsafe-eval' 'unsafe-inline' 'self' *.myhost.com 'sha256-myHash';
<script type="text/javascript" src="myScript.js"></script>
<script type="text/javascript" integrity='sha-256-myHash'>
//some stuff
</script>
除非提供散列,否则我希望底部脚本不会加载。我的印象是 Chrome 会忽略 unsafe-inline 并寻找散列。不安全内联只是 IE 的后备。
我尝试的另一种方法是:
(讨论 here)
"Content-Security-Policy" value="
default-src 'self'
script-src 'self' 'unsafe-inline' 'strict-dynamic' *.myhost.com http: https:;
@Scripts.Render("~/bundles/myScripts");
这从不加载我的本地脚本,由于严格动态,它忽略了白名单,因此 MVC 通过 Scripts.Render 发出的任何内容都不会加载。
我知道内联脚本并不理想,但现在无法避免。我 99% 肯定有一个 SO post 某处讨论了这个,其中详细说明了什么是跨浏览器支持的最佳选择(即 Chrome 忽略不安全内联但为 IE 提供它)但我不能找到拯救我生命的东西。
有什么指点吗?
谢谢。
它实际上是一个将在存在时使用的随机数,而不是哈希值。
可以在此处找到更多信息:
鉴于以下情况:
"Content-Security-Policy" value="
default-src 'none';
script-src 'unsafe-eval' 'unsafe-inline' 'self' *.myhost.com 'sha256-myHash';
<script type="text/javascript" src="myScript.js"></script>
<script type="text/javascript" integrity='sha-256-myHash'>
//some stuff
</script>
除非提供散列,否则我希望底部脚本不会加载。我的印象是 Chrome 会忽略 unsafe-inline 并寻找散列。不安全内联只是 IE 的后备。
我尝试的另一种方法是:
(讨论 here)
"Content-Security-Policy" value="
default-src 'self'
script-src 'self' 'unsafe-inline' 'strict-dynamic' *.myhost.com http: https:;
@Scripts.Render("~/bundles/myScripts");
这从不加载我的本地脚本,由于严格动态,它忽略了白名单,因此 MVC 通过 Scripts.Render 发出的任何内容都不会加载。
我知道内联脚本并不理想,但现在无法避免。我 99% 肯定有一个 SO post 某处讨论了这个,其中详细说明了什么是跨浏览器支持的最佳选择(即 Chrome 忽略不安全内联但为 IE 提供它)但我不能找到拯救我生命的东西。
有什么指点吗?
谢谢。
它实际上是一个将在存在时使用的随机数,而不是哈希值。
可以在此处找到更多信息: