检查请求是否是chrome扩展中的子资源完整性

时间:2017-03-22 00:31:18

标签: google-chrome google-chrome-extension subresource-integrity

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

我想在启动请求之前知道这一点,因此应该使用chrome.webRequest.onBeforeRequest来完成。但它没有提供有关请求的提示,因为SRI是浏览器端。请求完成后,一切都会发生。

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

也许SRI太新了,无法访问扩展程序,因为我在chrome-extension文档中找不到它。

1 个答案:

答案 0 :(得分:2)

是的,通过检查元素上的相应属性(即integrity),您可以在请求资源之前确定资源是否受subresource-integrity保护指定资源作为元素添加到DOM。您可以content script执行document_start(在manifest.jsonrun_at中指定),或使用tabs.executeScript() 1 (runAt))。然后,该脚本可以设置MutationObserver来监视放置在DOM中的元素。然后需要使用子资源完整性检查每个适当的元素类型(即<script><link>)。此检查/确定将在webRequest.onBeforeRequest事件之前发生。

在完全解析HTML之前,执行此操作不会停止所有请求。它执行检查,因为指定资源的每个元素都输入到DOM中。另一方面,显然,通过使用MutationObserver引入的任何附加处理确实会增加一些额外的时间来解析HTML,创建DOM并加载所有资源。

  1. 使用document_starttabs.executeScript()处执行脚本的时机正确并非易事。如何做是一个单独的问题。