Tampermonkey(适用于大多数浏览器)和Greasemonkey(适用于Firefox)支持@match
和@include
指令。
当我开始阅读它们之间的差异时,结果发现@match
有点严格:用户脚本不会在某些地址上启动,这可能被认为是潜在的危险或只是不需要的。
由此产生的问题是:
a)在所有地址上启动我自己的用户脚本是否存在任何潜在风险(即@match *://*/*
和@include
相同)?
或者,b)在某些地址上启动用户脚本的限制仅适用于第三方用户脚本,即从某些站点下载并因此可能包含某些恶意代码的用户脚本?
在所有地址上运行您自己的用户脚本是否存在任何潜在风险?是的,一个小的;见下文。
(目前)不在所有页面上运行自己的用户脚本的主要原因是:
$(".someclass").remove();
代码仅影响X页 - 直到它没有。头部刮伤,随后诅咒......
其他常见的副作用包括script clashes that lead to page or userscript failures。$.get( "frbyPlay.me/pics?user=admin&pw=1234"...
,错误的站点可以看到它(或AJAX)。
使用页面的JS时,攻击的途径是无限的。幸运的是,这通常风险很低且容易减轻,但无知或自满会导致严重的尴尬。请注意,原因1和2也是为什么你应该尽可能多地使用@match
而不是@include
。 @match
可以更快地解析网址,也不太可能触发不需要/意外的网站。
(并且,在Tampermonkey中,@match
在Tampermonkey Dashboard中添加了那些小站点图标。)