检查请求是否是 Chrome 扩展中的子资源完整性
Check if a request is a subresource integrity in a Chrome extension
是否可以通过 Chrome 扩展的子资源完整性 (SRI) 检查 script/stylesheet 是否受到完整性保护?
我想在发起请求之前就知道这一点,所以这应该用chrome.webRequest.onBeforeRequest
来完成。但它没有给出有关请求的提示,因为 SRI 是浏览器端的。一切都在请求完成后发生。
从我的角度来看,获取此信息的唯一方法是直接访问 DOM。这意味着我必须暂停所有请求,直到 HTML 被完全解析,这似乎不是可行的方法。
也许 SRI 太新了,扩展无法访问,因为我在 Chrome 扩展文档中找不到它。
是的,您可以确定资源是否受 subresource-integrity, prior to the request for the resource being made, by checking for the appropriate attribute(s) (i.e. integrity
) on the element specifying the resource as the element is added to the DOM. You can have a content script that is executed at document_start
(either specified in manifest.json (run_at
), or injected using tabs.executeScript()
1 (runAt
)). That script could then set up a MutationObserver to watch elements being placed in the DOM. Each appropriate element type (i.e. <script>
and <link>
) would then need to be checked for using subresource-integrity. This check/determination will occur prior to the webRequest.onBeforeRequest
事件保护。
这样做不会停止所有请求,直到 HTML 被完全解析。当指定资源的每个元素输入 DOM 时,它会执行检查。另一方面,显然,通过使用 MutationObserver 引入的 any 额外处理确实增加了一些额外的时间来解析 HTML、创建 DOM 和加载所有资源。
- 使用
tabs.executeScript()
获得正确的时间以在 document_start
处执行脚本并非易事。如何做到这一点将是一个单独的问题。
是否可以通过 Chrome 扩展的子资源完整性 (SRI) 检查 script/stylesheet 是否受到完整性保护?
我想在发起请求之前就知道这一点,所以这应该用chrome.webRequest.onBeforeRequest
来完成。但它没有给出有关请求的提示,因为 SRI 是浏览器端的。一切都在请求完成后发生。
从我的角度来看,获取此信息的唯一方法是直接访问 DOM。这意味着我必须暂停所有请求,直到 HTML 被完全解析,这似乎不是可行的方法。
也许 SRI 太新了,扩展无法访问,因为我在 Chrome 扩展文档中找不到它。
是的,您可以确定资源是否受 subresource-integrity, prior to the request for the resource being made, by checking for the appropriate attribute(s) (i.e. integrity
) on the element specifying the resource as the element is added to the DOM. You can have a content script that is executed at document_start
(either specified in manifest.json (run_at
), or injected using tabs.executeScript()
1 (runAt
)). That script could then set up a MutationObserver to watch elements being placed in the DOM. Each appropriate element type (i.e. <script>
and <link>
) would then need to be checked for using subresource-integrity. This check/determination will occur prior to the webRequest.onBeforeRequest
事件保护。
这样做不会停止所有请求,直到 HTML 被完全解析。当指定资源的每个元素输入 DOM 时,它会执行检查。另一方面,显然,通过使用 MutationObserver 引入的 any 额外处理确实增加了一些额外的时间来解析 HTML、创建 DOM 和加载所有资源。
- 使用
tabs.executeScript()
获得正确的时间以在document_start
处执行脚本并非易事。如何做到这一点将是一个单独的问题。