关于 NodeJs 源码保护
发布于 6 个月前 作者 somax 1692 次浏览 来自 分享

先说一下背景: 不同于大多数互联网公司,我们的软件一般不会部署在我们能够掌控的机房内,大多跟随不同的项目部署到客户的机房中。

我们最近在思考,希望找到一种方案可以保护我们的源码,至少增加盗用的难度。

目前的思路除了用核心模块用 C 或者 Java 写以外,还有一种方案就是使用 crypto 加密源码,运行时再解密。虽然解密后在内存中依然可以获得源码,但至少在复制分发的过程中,不能轻易的看到源码。倾向于这种方案是因为我们 JS 开发人员相对比较多。

花了两天写了个模块:https://www.npmjs.com/package/extension-jse 供大家讨论。各位看看这个方案是否可行,也许解码部分可以用 C 实现,不知道有没有必要。

17 回复

先收藏,稍后试试

来自酷炫的 CNodeMD

难道你解密的密钥不是用js写在源文件里面的?

@zsea 用环境变量

@somax 能看到你代码了,还看不到环境变量吗

来自酷炫的 CNodeMD

@merrynode 你说的没错,这是我能想到的最好办法了。通常数据库连接密码都是配置在环境变量中,有没有其他更好的方案呢? 我们当前考量是增加一些盗用成本,至少是在介质传递过程中过滤掉一点风险,但也不希望投入过大的成本去做加密这件事。

试试node-compiler

我就想问server.js 服务器运行的代码也可以直接下载到吗 一般客户端的JS才能直接下载的

@nasaplayer 遇见代码写得烂的,找一下可注入的漏洞还真能下载到

用过jxcore和node-compiler 但是原理如jxcore的 其实没有进行加密,因为js明文在运行的时候还是会出现在内存中,还是能得到。 node-compiler没有研究过libsquash 不过看作者介绍大概也是这个思路 所以没法绝对保护,现在卖软件除非是亲朋好友那种,其他的一概是提供服务,顶多给个前端界面。

v8有原生的方案来做这个事情啊,可以google:v8 snapshot 另附nw.js的文档: http://docs.nwjs.io/en/latest/For Users/Advanced/Protect JavaScript Source Code/

压缩混淆一下基本就可以了

把关键代码,用C ++ 写了,就是了。。。

nodec 接下来会将js代码变成字节码 自豪地采用 CNodeJS ionic

回到顶部