上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

关于油猴沙箱不同浏览器的区别

[复制链接]
  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 193 天

    [LV.7]常住居民III

    710

    主题

    5881

    回帖

    6704

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6704

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2021-2-5 00:38:16 | 显示全部楼层 | 阅读模式

    简略翻译

    请参阅Chrome用户脚本是否与Greasemonkey脚本一样具有隔离?” Chrome用户脚本和Greasemonkey脚本均与页面的javascript隔离。这样做是为了帮助您避免被黑客入侵,但同时也减少了冲突和意外。

    但是每种浏览器使用的方法是不同的

    FireFox

    从1.0开始除grant none外,在XPCNativeWrapper沙箱中运行脚本(这里版本号可能存疑,不同的文章版本号不同)

    从2012年8月的1.0版开始,Greasemonkey支持两种模式:具有可用于脚本的特权API的旧模式,以及较新的无特权模式。

    默认情况下,将脚本包含在匿名函数中

    提供unsafewindow访问原网页的javascript功能,请注意,恶意网站作者可能会根据unsafewindow获取脚本函数使用权提升自身权限

    Chrome

    在isolated world(暂且称之为隔离沙箱)中运行脚本

    默认情况下,将脚本包含在匿名函数中

    会严格阻止脚本对页面js的访问,同样,也会严格阻止页面对脚本的访问

    关于早期绕过的方法可以参考:https://bbs.tampermonkey.net.cn/thread-268-1-1.html

    现在,chrome最新版本提供了一个名为unsafewindow的对象,实现了极其有限的使用性,但是这个对象不提供对页面js的访问权限

    他的window作用域与脚本作用域相同,并且不再页面js作用域中

    关于绕过Chrome的访问权限的三种方法

    第一种参考https://bbs.tampermonkey.net.cn/thread-268-1-1.html

    第二种

    因为虽然执行环境是隔离的,但是dom树是共用的

    创建script元素是在原始网页执行环境

    延时是因为为了保证网页的完整加载再进行执行

    setTimeout(function() {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.innerHTML = "document.body.setAttribute('data-fp', fp);";
        document.head.appendChild(script);
        document.head.removeChild(script);
    
        console.log(document.body.getAttribute('data-fp'));
    }, 1000);

    第三种是通过href执行js代码
    通过设置href来执行js脚本获取数据

    setTimeout(function() {
        location.href = "javascript:document.body.setAttribute('data-fp', fp);";
        setTimeout(function() {
            console.log(document.body.getAttribute('data-fp'));
        }, 0);
    }, 1000);

    参考文章

    Why is window (and unsafeWindow) not the same from a userscript as from a tag?

    https://stackoverflow.com/questions/10824697/why-is-window-and-unsafewindow-not-the-same-from-a-userscript-as-from-a-scrip

    在Chrome插件中访问原始网页中的变量
    https://www.keakon.net/2011/11/02/%E5%9C%A8Chrome%E6%8F%92%E4%BB%B6%E4%B8%AD%E8%AE%BF%E9%97%AE%E5%8E%9F%E5%A7%8B%E7%BD%91%E9%A1%B5%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    慵懒
    2023-5-5 13:37
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    117

    主题

    405

    回帖

    711

    积分

    版主

    积分
    711

    油中2周年油中3周年

    发表于 2021-2-5 14:22:22 | 显示全部楼层
    哥哥牛逼
    提及少年一词,应与平庸相斥!
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表