gpt4 book ai didi

javascript - Chrome 用户脚本是否与 Greasemonkey 脚本一样与全局命名空间分开?

转载 作者:数据小太阳 更新时间:2023-10-29 06:08:34 25 4
gpt4 key购买 nike

我知道 Greasemonkey 脚本 自动包装在匿名函数中 以某种方式隔离,以防止它们与页面中的脚本冲突。

Chrome 用户脚本是否也会发生同样的情况?

最佳答案

是的,Greasemonkey 脚本是 normally wrapped in an anonymous function .而且,Chrome userscripts apparently are too .

但是,更重要的是,Greasemonkey 脚本通常1 包裹在XPCNativeWrapper 中沙盒,而谷歌浏览器将用户脚本转换为扩展,they operate in an arena that Google calls an "isolated world" 2.

因此,出于安全目的,您不需要将脚本代码包装在匿名函数中,它们已经受到保护。

请注意:

  1. 如果您直接将代码注入(inject)页面(创建一个 <script> 标记),那么页面的 JS 可以看到该代码。
  2. 如果您使用 unsafeWindow ,那么该页面理论上可以跟随它返回并获得略微提升的特权。

风险非常低,而且我还没能在野外找到任何记录在案的漏洞。

~~~
最重要的是,脚本在两种浏览器中的隔离程度不同。 (而且不仅仅是通过匿名函数包装。)

Greasemonkey 有 a nice set of privileged features可用,在 Firefox 中。而 Chrome 中的用户脚本受到更多限制。

但是,通过使用 Tampermonkey extension,GM 的大部分功能都恢复到 Chrome。 .




1 截至 Greasemonkey version 1.0 (August 24, 2012),沙箱由the @grant directive控制.如果脚本以(或默认为)@grant none 运行,则不使用沙箱。该脚本仅在私有(private)范围内运行,而正常的 GM_ , API 函数将不起作用。

2 这听起来不是比一些讨厌的沙箱更大/更好吗? (^_^)

.

关于javascript - Chrome 用户脚本是否与 Greasemonkey 脚本一样与全局命名空间分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com