0

是否可以通过 Chrome 扩展程序的子资源完整性 (SRI) 检查脚本/样式表是否受到完整性保护?

我想在发起请求之前知道这一点,所以应该用chrome.webRequest.onBeforeRequest. 但它没有给出关于请求的提示,因为 SRI 是浏览器端。一切都在请求完成后发生。

从我的角度来看,获取此信息的唯一方法是直接访问 DOM。这意味着我必须暂停所有请求,直到 HTML 被完全解析,这似乎不是要走的路。

也许 SRI 太新而无法被扩展访问,因为我在 Chrome 扩展文档中的任何地方都没有找到它。

4

1 回答 1

3

是的,您可以在请求资源之前通过检查指定资源的元素上的适当属性(即)来确定资源是否受subresource-integrityintegrity保护,因为该元素被添加到DOM。您可以有一个在(在manifest.json ( ) 中指定,或使用1 ( )注入)执行的内容脚本。然后该脚本可以设置一个MutationObserver来观察放置在 DOM 中的元素。然后需要检查每个适当的元素类型(即和)是否使用子资源完整性。该检查/确定将在事件发生之前进行。document_startrun_attabs.executeScript()runAt<script><link>webRequest.onBeforeRequest

在完全解析 HTML 之前,这样做不会停止所有请求。当每个指定资源的元素被输入到 DOM 时,它会执行检查。另一方面,显然,您通过使用 MutationObserver 引入的任何额外处理确实会增加一些额外的时间来解析 HTML、创建 DOM 和加载所有资源。


  1. 获得正确的时间以在document_start使用时执行脚本并tabs.executeScript()非易事。如何做到这一点将是一个单独的问题。
于 2017-03-22T05:42:08.697 回答