首页 >社区问答列表 >javascript - 非开源js如何防止源码泄露?

javascript - 非开源js如何防止源码泄露?

非开源的js框架有没有方法阻止别人查看源码?

  • 迷茫
  • 迷茫    2017-04-10 14:31:457楼

    JavaScript再变相也是明文传播代码。又不可能像PHP的Zend加密那样要求用户的浏览器上有特定组件……所以JS加密无非只好使用这些minify/uglify/混淆代码逻辑等等这些小的手段。

    但有一个重要的考虑因素是:代码能隐藏住,代码的逻辑藏不住。代码无论写成什么样子,代码做的事情用调试器一跟踪就出来。

    JS的加密和破解就像是一场结束不了的军备竞赛。我的建议是:

    • 抄袭能防,仿制防不了。合理期待,不要强求。
    • 防止别人简单地剽窃你的代码就是胜利。
    • 该服务器负责的交给服务器,该客户端负责的交给客户端。
    • 动态互动强于静态防守。短时间没有收益,或者有收益了也不能持久,攻击者必然放弃。例如:对于防API、防自动机器人等目的,经常更改代码就是个有效的办法。

    +0添加回复

  • 回复
  • 小葫芦
  • 小葫芦    2017-04-10 14:31:455楼

    个人感觉前端的脚本基本是公开的,虽然代码混淆能给阅读代码增加难度,但是在sublime这样的神器面前也会降低许多难度。如果是真的特别重要的核心商业机密,能交给后台服务器的尽量交给后台服务器吧。前端的重点作用是在展现,表现力更重要,前端用各种别人的东西比较多^_^做混淆的目的更多的是减小脚本的体积。。。

    +0添加回复

  • 回复
  • 小葫芦
  • 小葫芦    2017-04-10 14:31:454楼

    uglifyjs这类的混淆器,可以让代码变成很难读的样子,即使重新格式化,变量名也都变成了a,b,c,d这种。
    这种情况下要读懂已经有一定难度了,但别人要真正想逆向你的话,一样可以通过单步等手段来摸清你的代码执行流程,梳理出逻辑来。
    简单说就是不可能完全不让别人看到,只是让别人付出相当大的代价。

    +0添加回复

  • 回复
  • ringa_lee
  • ringa_lee    2017-04-10 14:31:453楼

    把所有 JavaScript 代码转换成零宽字符(或者其他一一对应字符),
    浏览器执行的时候,再用脚本把零宽字符转换成源码然后执行。
    查看源码在视觉上就消失了。

    可是源码体积变大,也降低了脚本执行效率。安全性和稳定性可能也没有保障,具体还不太了解。
    从没看到有人这么做过。

    简单说就是不可能完全不让别人看到,别人一样可以自己用脚本转换字符,让别人付出更大的代价同时也让自己付出代价..

    +0添加回复

  • 回复
  • 小皮
  • 小皮    2017-04-10 14:31:451楼

    我想到的是只能用代码混淆,Javascript是client-side脚本,不能完全阻止查看源码。

    另外,这个链接中提到的第一个方法算是防盗链了。后面又给出了一个链接,讲得貌似是将代码加密成一张图片,然后只支持现代浏览器(Modern Web Browsers),也是防君子不防小人的方法。

    其实真的有Encode就Decode,所以说只要让别人破译密文花费的代价(远)大于获取到的明文的价值,这就成功了。

    源有益~

    +0添加回复

  • 回复