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 · 5025 次点击
    这是一个创建于 3232 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 』作弊的事情,就知道为什么要加密代码了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5720 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:35 · PVG 09:35 · LAX 17:35 · JFK 20:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.