10

子资源完整性似乎是一个很棒的权宜之计,允许以安全的方式使用第三方控制的 HTTP 服务资源。

但是规范只考虑HTMLLinkElementHTMLScriptElement接口:

笔记

本规范的未来修订版可能包括对所有可能的子资源的完整性支持,即 , a, audio, embed, iframe, img, link, object, script, source,trackvideo元素。

我知道scriptlink元素引用的内容更“活跃”,但浏览器删除了绿色挂锁,以便通过纯 HTTP 获取甚至相对无害的图像,而规范选择忽略它们?这对我来说似乎是一个巨大的缺乏远见。

这背后的原因是什么?我们什么时候可以期待“未来的修订”,如果有的话?

4

1 回答 1

2

SRI 为您提供了一些保证,即您要求的资源没有被更改。例如,如果您从 CDN 加载 JQuery,那么您希望确保没有人修改它以包含恶意代码(从另一个站点加载代码的主要缺点之一 - 您隐含地信任该站点的安全性)。SRI 为您提供保证。

SRI对它的加载方式无话可说。您可以通过 http 轻松下载 JQuery 并获得不安全的内容警报,尽管它已通过 SRI 验证。

不安全的内容是不好的,原因有很多,包括:

  1. 不保证内容没有在线路上被更改(SRI 解决了一些问题)。
  2. cookie 泄漏(除非受 Secure 属性保护)。
  3. 隐私泄露(窥探者知道您已请求该资源)。

SRI 只解决了第一个问题。即使这样,它也只会在它被改变时停止加载,并且不会减少它被改变的机会(就像 https 一样)。

如果您想解决不安全的内容问题,那么您可以查看内容安全策略,或者明确阻止这些问题,或者使用 upgrade-insecure-requests 指令自动升级它们(对于支持此功能的浏览器)。

于 2016-01-27T07:20:09.750 回答