是否可以通过chrome扩展程序的子资源完整性检查脚本/样式表是否受到完整性保护?
我想在启动请求之前知道这一点,因此应该使用chrome.webRequest.onBeforeRequest
来完成。但它没有提供有关请求的提示,因为SRI是浏览器端。请求完成后,一切都会发生。
从我的角度来看,获取此信息的唯一方法是直接访问DOM。这意味着我必须停止所有请求,直到html被完全解析,这似乎不太可能。
也许SRI太新了,无法访问扩展程序,因为我在chrome-extension文档中找不到它。
答案 0 :(得分:2)
是的,通过检查元素上的相应属性(即integrity
),您可以在请求资源之前确定资源是否受subresource-integrity保护指定资源作为元素添加到DOM。您可以content script执行document_start
(在manifest.json(run_at
中指定),或使用tabs.executeScript()
1 (runAt
))。然后,该脚本可以设置MutationObserver来监视放置在DOM中的元素。然后需要使用子资源完整性检查每个适当的元素类型(即<script>
和<link>
)。此检查/确定将在webRequest.onBeforeRequest
事件之前发生。
在完全解析HTML之前,执行此操作不会停止所有请求。它执行检查,因为指定资源的每个元素都输入到DOM中。另一方面,显然,通过使用MutationObserver引入的任何附加处理确实会增加一些额外的时间来解析HTML,创建DOM并加载所有资源。
document_start
在tabs.executeScript()
处执行脚本的时机正确并非易事。如何做是一个单独的问题。