再次请教js源代码加密,要部署至外网环境,使用什么工具加密才能保证源代码安全?
发布于 11 年前 作者 nobody 22630 次浏览 最后一次编辑是 8 年前

NodeJS,CenterOS6.x,Mongodb。从网上了解使用Google comip &YUIComip &Ugly效果不理想,请高人告知!

14 回复

客户端代码,你想再怎么加密也没用,就是混淆一下。

客户端的话,只能混淆。。。。。你要加密的话,得自己在底层写个加载器。。。目前貌似没见到过这方面的开源项目

只要源代码是js就没有加密可言,只要人家想看就必定能看到。ugly之类的只不过是增加代码的阅读难度而已。不想暴露代码,要么把整个模块重写为c++扩展,要么修改v8代码实现自己的代码加载方式(依然有可能通过v8的api读取源码)。话说,如果代码的使用者不是hacker级别的,简单的扩展nodejs的代码加载方式也能蒙混过去,可参考coffeescript加载.coffee文件的实现方式。

谢谢各位大牛在百忙中给与回复。谢谢。

想问的是你这个项目是nodejs的网站吗还是客户端软件? 我想到一个办法你可以参考参考;

要是客户端的,就有办法了,参见node-webkit加密;

要是服务器端的,你可以把js需要加密的部分,加密成一个二进制的.dat文件,写一个exe来加载和启动node,启动的时候,把数据解码之后传递进去运行。

如果是客户端的网页内运行的js,那就只能混淆了,不能加密

即使是二进制的可执行程序,其也是可以反编译为汇编的,只要别人肯钻研,还是能了解到程序内部的工作原理。

即使是这样,程序最终还是要还原成JavaScript代码在V8虚拟机中执行,如果别人能得到一份你的程序(尽管是加密过的),还是能通过一些调试工具来查看内存数据,还原出源代码的。

顶多就是对代码混淆一下,提高别人分析代码时的难度而已。

代码是运行在服务器端的.但还需要加密

如果代码是运行在服务器端的,你就写成.node模块 不过成本太高, 希望作者提供普通脚本编译成.node,不过这不符合开源精神~

楼上说:修改v8代码实现自己的代码加载方式(依然有可能通过v8的api读取源码),是指通过调试的方式读出吗?如果启动过程不让调试,还能通过其他方式读出吗?

开源吧,少年!

自己从开源学到不少内容,也鼓励开源。商业的公司,有时为了防竞争对手,有时还必要的加密。

回到顶部