Greasemonkey 在所有地址上运行我自己的用户脚本有风险吗?

Greasemonkey 在所有地址上运行我自己的用户脚本有风险吗?,greasemonkey,userscripts,tampermonkey,Greasemonkey,Userscripts,Tampermonkey,Tampermonkey(对于大多数浏览器)和Greasemonkey(对于Firefox)都支持@match和@include指令 当我开始读到它们之间的区别时,发现@match有点严格:userscript不会在某些地址上启动,这可能被认为是潜在的危险或不需要的 由此产生了一个问题: a) 在所有地址上启动我自己的用户脚本是否存在任何潜在风险(即@match*:/*/*/*/*和@include)的潜在风险 或者,b)在某些地址上启动用户脚本的限制仅与第三方用户脚本相关,即从某些站点

Tampermonkey(对于大多数浏览器)和Greasemonkey(对于Firefox)都支持
@match
@include
指令

当我开始读到它们之间的区别时,发现
@match
有点严格:userscript不会在某些地址上启动,这可能被认为是潜在的危险或不需要的

由此产生了一个问题:

a) 在所有地址上启动我自己的用户脚本是否存在任何潜在风险(即
@match*:/*/*/*/*
@include
)的潜在风险


或者,b)在某些地址上启动用户脚本的限制仅与第三方用户脚本相关,即从某些站点下载的用户脚本,因此可能包含一些恶意代码?

在所有地址上运行您自己的用户脚本是否存在潜在风险?是的,一个小的;见下文

(当前)不在所有页面上运行自己的用户脚本的主要原因是:

  • 浏览器性能:加载和运行脚本需要时间、CPU周期,有时还需要磁盘访问。通常情况下,延迟几乎不明显,但如果它没有执行有用的服务,为什么还要延迟呢
  • 意外的副作用:您认为您的
    $(“.someclass”).remove()代码只影响X页--直到它不起作用为止。搔头和随意的诅咒接踵而至……
    其他常见的副作用包括
  • iframes:默认情况下脚本在iframes上运行,有些页面的iframes和/或iframes的分数嵌套在几个层次上。
    这是性能和副作用问题的乘数
  • 风险:泄漏的敏感代码:在非沙盒代码中使用
    $.get(“frbyPlay.me/pics?user=admin&pw=1234”…
    ,错误的站点可以看到它(或AJAX)。
    当使用页面的JS时,攻击的途径是无限的。幸运的是,这通常是一个非常低的风险,很容易缓解,但无知或自满会导致严重的尴尬
  • 风险:暴露于“坏消息”:最近,。
    当脚本使用的某些库(如jQuery)遭到黑客攻击或“商业优化”时,会发生什么情况?脚本运行的页面越少,出现恶作剧的机会就越小,损害的范围也就越小。
    (当然,如果坦佩尔猴子自己长了山羊胡子,那我们就不管了。)

  • 请注意,原因1和原因2也是您应该尽可能多地使用
    @match
    而不是
    @include
    @match
    解析web地址更快,并且在不需要的/意外的网站上触发的可能性也更小。
    (并且,在Tampermonkey中,
    @match
    在Tampermonkey仪表板中添加这些小站点图标。)