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

Is it risky to run my own userscripts on all addresses?

Tampermonkey(适用于大多数浏览器)和 Greasemonkey(适用于 Firefox)同时支持 @match@include 指令。

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

由此产生了问题:

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

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

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

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

  1. 浏览器性能: 加载和 运行 脚本需要时间,CPU 周期,有时还需要磁盘访问。通常,延迟几乎不明显,但如果它没有执行有用的服务,为什么还要延迟呢?
  2. 意想不到的副作用: 您认为您的 $(".someclass").remove(); 代码只影响 X 个页面——直到它没有。挠头,然后是可选的咒骂......
    其他常见的副作用包括 script clashes that lead to page or userscript failures.
  3. iframe: 脚本 运行 默认在 iframe 上,有些页面有数十个 iframe and/or iframe 嵌套了好几层。
    这是性能和副作用问题的乘数。
  4. 风险:泄露敏感代码:在非沙盒代码中使用$.get( "frbyPlay.me/pics?user=admin&pw=1234"...,错误的站点可以看到它(或AJAX)。
    当使用页面的 JS 时,攻击的途径是无限的。幸运的是,这通常是一个非常低的风险并且很容易缓解,但是无知或自满会导致严重的尴尬。
  5. 风险:暴露于 "Breaking Bad": 最近,a formerly much loved and trusted extension turned evil.
    当您的脚本使用的某些库(例如 jQuery)被黑或 "commercially optimized" 时会发生什么?脚本 运行 的页数越少,发生恶作剧的机会就越少,损害扩散就越小。
    (当然,如果 Tampermonkey 本身长出了山羊胡子,那么无论如何我们都会被打败。)

请注意,原因 1 和 2 也是您应该尽可能使用 @match 而不是 @include 的原因。 @match 解析网址的速度更快,而且在 unwanted/unexpected 个网站上触发的可能性也大大降低。
(并且,在 Tampermonkey 中,@match 在 Tampermonkey 仪表板中添加了这些小站点图标。)