我正在阅读有关Subresource Integrity的内容,并了解它是用于验证外部文件的。我想毫无疑问,我找不到isocpp或MDN内联JavaScript的任何引用。
那么,可以肯定地说SRI相关属性integrity
和crossorigin
对于内联JavaScript完全没用吗?
答案 0 :(得分:2)
那么,说明与SRI相关的属性
integrity
和crossorigin
对内联JavaScript完全没用是否安全?
是的,因为这些属性仅对具有script
属性的src
元素有用:
https://html.spec.whatwg.org/multipage/scripting.html#attr-script-integrity
integrity
属性表示此元素负责的请求的完整性元数据。值是文本。嵌入模块脚本或未指定integrity
属性时,不得指定src
属性。 [SRI]
同样如问题中所述,MDN中的描述也清楚地表明了这一点:
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
子资源完整性(SRI)是一项安全功能,可让浏览器验证他们提取的文件(例如,来自CDN)是否在没有意外操作的情况下传递。它的工作原理是允许您提供提取的文件必须匹配的加密哈希。
答案 1 :(得分:2)
我知道该线程有些旧,但是W3C现在支持完整性哈希检查。在以下情况下执行脚本:
WebAppSec Subresource Integrity
编辑: 似乎实际上只有Chrome支持此功能
答案 2 :(得分:1)
是的,可以这么说,因为当integrity
没有“src”属性时,<script>
标记的<script>
属性会被忽略。当通过单独的HTTP请求获取资源时,SRI才会出现。
答案 3 :(得分:0)
如果要保护内联脚本文件,可以使用CSP标头中的nonce属性,并在脚本标签上指定该属性
nonce-base64-value
。
使用加密随机数(使用一次的数字)的特定内联脚本的白名单。服务器每次发送策略时都必须生成一个唯一的随机数值。提供一个无法猜测的随机数非常重要,因为绕开资源策略是微不足道的。有关示例,请参见不安全的内联脚本。指定随机数会使现代浏览器忽略“ unsafe-inline”,仍然可以为不支持随机数的较旧浏览器设置