是否可以通过 Chrome 扩展程序的子资源完整性 (SRI) 检查脚本/样式表是否受到完整性保护?
我想在发起请求之前知道这一点,因此应该使用chrome.webRequest.onBeforeRequest
来完成。但它没有给出有关请求的任何提示,因为 SRI 是浏览器端的。一切都发生在请求完成后。
从我的 Angular 来看,获取此信息的唯一方法是直接访问 DOM。这意味着我必须停止所有请求,直到 HTML 被完全解析,这似乎不是可行的方法。
也许 SRI 太新了,扩展程序无法访问它,因为我在 Chrome 扩展程序文档中没有找到它。
最佳答案
是的,您可以确定资源是否受 subresource-integrity 保护,在发出资源请求之前,在将元素添加到 DOM 时,检查指定资源的元素上的适当属性(即 integrity
)。您可以拥有content script执行于 document_start
(在 manifest.json ( run_at
) 中指定,或使用 tabs.executeScript()
1 ( runAt
) 注入(inject))。然后该脚本可以设置 MutationObserver观察 DOM 中放置的元素。然后需要使用子资源完整性检查每个适当的元素类型(即 <script>
和 <link>
)。此检查/确定将在 webRequest.onBeforeRequest
之前进行。事件。
这样做不会阻止所有请求,直到 HTML 被完全解析。当指定资源的每个元素被输入到 DOM 中时,它会执行检查。另一方面,显然,通过使用 MutationObserver 引入的任何额外处理确实会增加一些额外的时间来解析 HTML、创建 DOM 和加载所有资源。
<小时/>- 获取正确的时间以在
document_start
处执行脚本使用tabs.executeScript()
是不平凡的。如何做到这一点将是一个单独的问题。
关于javascript - 检查请求是否是 Chrome 扩展中的子资源完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940657/