即使在 SRI 完整性失败后仍执行 Javascript

Posted

技术标签:

【中文标题】即使在 SRI 完整性失败后仍执行 Javascript【英文标题】:Javascript executed even after SRI Integrity failure 【发布时间】:2019-07-30 13:18:40 【问题描述】:

我在本地9180端口有一个测试页面,正在从另一个端口加载JS以模拟不同的域。

<html>
<head>
  <script src="http://localhost:8080/myscript.js" integrity="jRIKARJybgWRWqQslhFC5boBExY7MBLvUpMWYpuXuL1sDqCCp2Gd"></script>
</head>
<body>
  Testing SRI
</body>

myscript.js

alert('Hello');

在浏览器上运行时,我在控制台上看到错误,但仍会触发警报

Error parsing 'integrity' attribute ('jRIKARJybgWRWqQslhFC5boBExY7MBLvUpMWYpuXuL1sDqCCp2Gd'). The hash algorithm must be one of 'sha256', 'sha384', or 'sha512', followed by a '-' character.

我错过了什么吗?或者由于本地浏览器允许执行脚本。

【问题讨论】:

【参考方案1】:

由于(如错误消息所述)integrity 属性值本身无效,因此浏览器不会强制执行它。

【讨论】:

正确,我在添加时似乎犯了一个错误。此外,资源似乎需要启用 CORS 才能强制执行完整性检查。

以上是关于即使在 SRI 完整性失败后仍执行 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

SRI 的完整性和跨域值是不是保存在 package.json 或其他地方?

如何获得 aspnetcdn.com 的 SRI(子资源完整性)哈希?

SRI 哈希不是预期的

是否可以将 SRI 用于 recurly.js cdn?

为啥我不能使用 SRI 从本地计算机 (file:///) 加载文件?

即使在应用程序卸载后仍存在 Secure Enclave 密钥