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

问题描述 投票:2回答:1

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

当我开始阅读它们之间的差异时,结果发现@match有点严格:用户脚本不会在某些地址上启动,这可能被认为是潜在的危险或只是不需要的。

由此产生的问题是:

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

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

greasemonkey userscripts tampermonkey
1个回答
4
投票

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

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

  1. 浏览器性能:加载和运行脚本需要时间,CPU周期,有时需要磁盘访问。通常情况下,延迟几乎不会引起注意,但如果它没有执行有用的服务,为什么还要延迟呢?
  2. 意外的副作用:您认为您的$(".someclass").remove();代码仅影响X页 - 直到它没有。头部刮伤,随后诅咒...... 其他常见的副作用包括script clashes that lead to page or userscript failures
  3. iframe:默认情况下,脚本会在iframe上运行,而某些网页的iframe数量和/或iframe数会嵌套在几个级别。 这是性能和副作用问题的乘数。
  4. 风险:泄漏的敏感代码:在非沙盒代码中使用$.get( "frbyPlay.me/pics?user=admin&pw=1234"...,错误的站点可以看到它(或AJAX)。 使用页面的JS时,攻击的途径是无限的。幸运的是,这通常风险很低且容易减轻,但无知或自满会导致严重的尴尬。
  5. 风险:暴露于“坏坏”:最近,a formerly much loved and trusted extension turned evil。 当脚本使用的某些库(如jQuery)被黑客攻击或“商业优化”时会发生什么?脚本运行的页面越少,恶作剧的可能性越小,损害蔓延的程度越低。 (当然,如果Tampermonkey本身长大了山羊胡子,那么无论如何我们都会被嘲笑。)

请注意,原因1和2也是为什么你应该尽可能多地使用@match而不是@include@match可以更快地解析网址,也不太可能触发不需要/意​​外的网站。 (并且,在Tampermonkey中,@match在Tampermonkey Dashboard中添加了那些小站点图标。)

© www.soinside.com 2019 - 2024. All rights reserved.