MDN docs状态:
To enable a web page to contain an <img> element whose src attribute points to this image,
you could specify "web_accessible_resources" like this:
"web_accessible_resources": ["images/my-image.png"]
The file will then be available using a URL like:
moz-extension://<extension-UUID>/images/my-image.png"
<extension-UUID> is not your extension's ID.
It is randomly generated for every browser instance.
This prevents websites from fingerprinting a browser by examining
the extensions it has installed.
因此,我认为扩展之外的任何网页都无法读取这些资源,因为它们需要知道随机的UUID。
但是,相同的MDN docs也指出:
Note that if you make a page web-accessible, then any website may then link or redirect
to that page. The page should then treat any input (POST data, for examples)
as if it came from an untrusted source, just as a normal web page should.
我不明白“然后任何网站都可以链接或重定向到该页面”。它不需要知道随机的UUID吗?网页还可以如何访问该资源?
答案 0 :(得分:0)
Web可访问资源的重点是能够将它们包含在Web上下文中。
尽管您可以将随机UUID传达给网页,以便它可以使用该文件,但网站代码本身不必包含该文件。这是一个假设的场景:
您正在编写一个扩展程序,该扩展程序将一个按钮添加到
evil.com
网站的UI中。该按钮应该上面有图像。您将图像与扩展名捆绑在一起,但是要将其作为
src
或CSS属性添加到网页,则需要能够从Web上下文引用它。因此,您可以使其可通过网络访问,然后使用内容脚本注入UI元素。
完全合理的情况。
请注意,由于URL是每个浏览器唯一的,因此随机的第三方站点villains-united.com
不能仅仅抓取URL来了解是否安装了扩展程序。这是WebExtensions基于Chrome的extension-id模型的UUID的意图。
但是,从安全的角度来看,让我们继续假设的情况。
evil.com
的操作员对您的额外UI感到不满意。他们在代码中添加了一个脚本,以查找添加的按钮。该脚本可以查看按钮的DOM属性,包括图像的地址。 现在,
evil.com
的代码可以看到您的UUID。做个好人,您扩展程序的源代码可在任何地方找到,包括在被调用时发射核导弹的页面(为什么要这么做以及为什么可以通过网络访问是另一回事,也许可以为{ {1}}。
good-guys-last-resort.org
的脚本现在可以重建此触发页面的URL并对其进行XHR,从而使地球陷入了核灾难。哎呀。您可能应该已经检查了该请求的来源。
基本上,如果页面中使用了可访问Web的资源,则UUID可能会通过DOM泄漏到该页面的上下文中。那可能不是您控制的页面。