我对 Sub 资源完整性 (SRI) 功能非常感兴趣。但是,为什么它只限于 JS 和 CSS 文件呢?我试图固定一个 LESS(CSS 变体)文件,其中的完整性标签被 Firefox 和 Chrome 忽略。
此外,我了解 SRI 的主要设计目的是防止对托管在内容交付网络 (CDN) 等外部资源上的文件进行不必要的更改。但是既然我们都喜欢分层安全性,为什么不将它添加到所有浏览器包含的文件(甚至是自托管的)上呢?
即使您能够更改 JS 文件,也可能(但不确定)您也能够更改完整性标签。
我对 Sub 资源完整性 (SRI) 功能非常感兴趣。但是,为什么它只限于 JS 和 CSS 文件呢?我试图固定一个 LESS(CSS 变体)文件,其中的完整性标签被 Firefox 和 Chrome 忽略。
此外,我了解 SRI 的主要设计目的是防止对托管在内容交付网络 (CDN) 等外部资源上的文件进行不必要的更改。但是既然我们都喜欢分层安全性,为什么不将它添加到所有浏览器包含的文件(甚至是自托管的)上呢?
即使您能够更改 JS 文件,也可能(但不确定)您也能够更改完整性标签。
但是,为什么它只限于 JS 和 CSS 文件呢?
W3C SRI 规范指出:
此处指定的方案也适用于链接,本规范的未来版本可能会扩大此覆盖范围。
它还指出:
本规范的未来修订版可能包括对所有可能的子资源的完整性支持,即,a、音频、嵌入、iframe、img、链接、对象、脚本、源、轨道和视频元素。
看来这只是规范的第一个版本。github 存储库还包括一个里程碑,参考规范的第二版将解决的问题。例如,有一个关于添加添加下载完整性功能的 github 问题。
我试图固定一个 LESS(CSS 变体)文件,其中的完整性标签被 Firefox 和 Chrome 忽略。
似乎他们严格遵守规范。第一个版本是关于添加link
和script
HTML 元素的完整性,但不是为每个属性添加完整性。该规范只提到处理integrity
的属性link
时元素rel="stylesheet"
:
每当用户代理尝试获取链接元素指向的资源时,该链接元素具有带有样式表关键字的 rel 属性
通过查看Less 网站,我们看到他们依赖link
但 with rel="stylesheet/less"
,因此不是规范的一部分。
也许您可以在他们的 github 存储库中为第二个版本提交问题?
为什么不将它添加到所有浏览器包含的文件(甚至是自托管的)上?
通过查看规范,它似乎不是他们威胁模型的一部分。这是他们的第一个目标:
损害第三方服务不应自动意味着损害包括其脚本的每个站点。
可以假设,如果攻击者能够修改自托管 JavaScript 文件,它可能会做得更多。当然,这并不意味着攻击者可以修改 HTML 部分,但他们模型中的攻击者不能修改内部资源。