即使在 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(子资源完整性)哈希?