前言
油猴脚本是一个很强大的工具,能够方便我们的日常生活,用好了就是一把利器,但这个利器也会被不法分子用于危险用途刺向我们。本篇就来和大家分享一下几个快速判断脚本危险性的方法,也欢迎大家进行补充。
本篇是小白向,主要是从脚本header中去判断,以不会代码的视角来快速判断一个脚本的危险性(对于审核人员也很是,很难的那么去细看代码,看懂了也不理解其业务逻辑)。
安装脚本尽量只从正规的脚本平台进行安装,脚本发布平台可以尽量的保证脚本的一个安全性,但也并非完全100%可靠,如果发现有违规脚本,请向平台举报,一起促进社区的和谐发展。
正文
其实总的来说就是,不要碰你不该碰的东西!
高危权限
这些权限可能造成你的财产损失、信息泄漏等,凡是有申请以下权限的都需要小心
GM_cookie
此方法能够获取到你的登录用户信息token,凡是需要申请GM_cookie
的脚本都需要小心,如果拿到了你的登录token可以进行很多为所欲为的操作,平常很少脚本需要此种权限,如果有需要多加注意,例如下面的脚本:
// ==UserScript==
// @name 油猴中文网优化
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://bbs.tampermonkey.net.cn/
// @match http://www.baidu.com/
// @grant GM_cookie
// @connect baidu.com
// ==/UserScript==
GM_cookie("list",{url:"http://www.baidu.com/"},function(){
console.log(arguments);
});
我这只是一个针对油猴中文网的一个脚本,但是我却申请了:GM_cookie
权限,其实到这一步可能还没毛病的(可能真想操作你油中账号,但也不应该要GM_cookie权限),但是这里却@match和@connect了baidu.com(百度),这是99%想干坏事,这样申请权限后,他就能完全操作你百度账号
GM_xmlhttpRequest
此方法与上面一样,可以无视浏览器的安全机制,直接跨域调用一些危险接口,这个方法是经常使用的,在使用时需要关注脚本头部声明的@connect
,如果@connect
是一个常见且有重要信息的域名,例如上面的百度,此脚本并未与百度有关联,那么此脚本也会有很大程度的危险性。未声明@connect
也可以跨域调用危险接口,但会弹出类似下方的窗口,在允许权限时需要注意请求的域名是否是一个安全的或者和业务相关的域名,然后就是请求地址是否正常,如果不是,那么也很可能是一个危险的脚本。
中危操作
这些操作一般获取不到太大的权限,但也可以造成一些损害,并且不易排查
脚本的跨域操作
可以使用GM_xmlhttpRequest
进行跨域,但是也可以用更隐蔽的方法去传输数据,关于这点可以怎么实现就不细说了。排查的话,使用f12的开发者工具->网络(network),选中第三方请求,然后一个一个的去找是否有一些敏感的请求。不过得益于浏览器的安全机制,一般无法获取到一些危险的权限与信息。
match
当脚本头部出现@match
一个比较敏感的网站时也需要注意,当你访问这个网站时脚本就能运行,跨域机制将失效。另外也会有一些脚本使用通配:@match *://*/*
的形式,这种十分不便排查,可以在代码中看看有没有敏感的字眼。
end
暂时想不到啥简单方便好排查的方法了,抛砖引玉看看大佬们有没有更多的想法