[Javascript] Javascript 源码保护的一个办法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
idoldog
V2EX    Javascript

[Javascript] Javascript 源码保护的一个办法

  •  
  •   idoldog 2016-01-22 03:01:31 +08:00 5512 次点击
    这是一个创建于 3629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Function.prototype.toString = function () { return "[native code]" } 

    这样当用户调用 functionA.toString() 的时候就看不到源码了。

    各位高手帮忙 review 下,看看有没有漏洞。

    19 条回复    2016-01-27 19:31:43 +08:00
    idoldog
        1
    idoldog  
    OP
       2016-01-22 03:03:58 +08:00
    详细方法可以参考这个贴子:

    http://www.v2ex.com/t/151771
    FrankFang128
        2
    FrankFang128  
       2016-01-22 07:45:40 +08:00 via Android
    无法保护
    aivier
        3
    aivier  
       2016-01-22 08:22:20 +08:00
    能执行,就能解密...
    finian
        4
    finian  
       2016-01-22 08:28:33 +08:00
    想多了,下发到客户端的 Javascript 代码防不了破解,只能增加破解成本
    lxrmido
        5
    lxrmido  
       2016-01-22 08:41:40 +08:00
    自欺欺人的感觉……
    morethansean
        6
    morethansean  
       2016-01-22 09:05:05 +08:00 via iPhone
    ...难道别人看你代码是通过 toString ?
    tabris17
        7
    tabris17  
       2016-01-22 09:06:50 +08:00
    这不自欺欺人么
    Hiufan
        8
    Hiufan  
       2016-01-22 09:15:36 +08:00   1
    前端何苦难为前端...
    zhuangzhuang1988
        9
    zhuangzhuang1988  
       2016-01-22 09:32:19 +08:00
    用 scala.js, 或者 clojurescript 试试看. 编译后的代码太好看了
    luoway
        10
    luoway  
       2016-01-22 10:02:19 +08:00
    @Hiufan 貌似后端转前端的才会不想代码被看到。
    曾问个同项目的后端同学看看他的后端代码,好交流一下怎么前后端协作分工,他绕着弯说不能给。

    前端加密目前都只是增加解密成本,做到混淆精简这一步就足够阻止无心人阅读了,但防不了有心人解密。
    @idoldog 这帖 letv 那个代码自带解密方法,纯属吓唬非前端。
    akagi
        11
    akagi  
       2016-01-22 11:05:40 +08:00
    其实没人想过做个类似 VProtect 那样的虚拟机壳么?
    akagi
        12
    akagi  
       2016-01-22 11:07:22 +08:00
    @akagi VMProtect, 另外一楼的链接中也有人提到了。
    dqh3000
        13
    dqh3000  
       2016-01-22 11:32:43 +08:00
    其实我一直在考虑用 emscripten ……

    然后用 C++写前端……
    fuyufjh
        14
    fuyufjh  
       2016-01-22 12:29:38 +08:00
    @morethansean 同感。。。
    onceyoung
        15
    onceyoung  
       2016-01-22 12:37:48 +08:00
    别的思路我不知道,不过把那你们的代码写的自己都看不懂,就相当于加密了...
    ChiChou
        16
    ChiChou  
       2016-01-22 12:42:40 +08:00
    mcfog
        17
    mcfog  
       2016-01-22 12:51:50 +08:00   1
    完全没用

    就连楼主认为的“防止在控制台打印函数源码”的用都没有

    xiongxin8802
        18
    xiongxin8802  
       2016-01-22 20:58:18 +08:00
    dart2js
    idoldog
        19
    idoldog  
    OP
       2016-01-27 19:31:43 +08:00
    悲剧啊~~~

    前端代码怎么保护起来?特别是现在像基于 JS 的客户端开发逐渐增多的情况下。

    大家可以看一下『蜻蜓 FM 』作弊的事情,就知道为什么要加密代码了。
    关于     帮助文档     自助推广系统   &nbs; 博客     API     FAQ     Solana     5479 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:35 PVG 15:35 LAX 23:35 JFK 02:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86