Node.js 服务私有部署中 license 加密这一块一般怎么搞的?
发布于 5 年前 作者 ZhangDianPeng 6976 次浏览 来自 问答

因为私有部署要部署在第三方客户的服务器上,需要 license 模块对有效期以及一些业务属性进行限制,业务属性比如:用户数量,某些高级功能限制等。

哪位大佬有这方面的经验,可以一起探讨下?

目前部署在客户服务器上的代码,都可以看到,没有进行混淆

谢谢

8 回复

丑化混淆是必须的,如果愿意可以用pkg打包,但丑化混淆就差不多了,其实不管怎么样,高手还是会拿到代码的,就看能不能容易把你的license逻辑中的某个Boolean改为true了。所以类似这种需求,编译型语言优先,脚本语言就差了。实在是只有这个技术栈,就丑化混淆+docker+隐藏代码。

@HobaiRiku 成熟的混淆库有推荐吗?我们现在是使用docker部署的,不过这个和docker部署关系不大吧?

或者有没有可以单独用编译型语言单独搞个模块来处理这块特殊逻辑,但是没想好怎么处理

@ZhangDianPeng 我这边使用gulp以及gulp-uglifyjs实现丑化,但其实丑化程度还是比较差的,像我对代码熟悉的直接可以修改丑化后的代码,但对于比较复杂的地方改起来还是有点难度,基本上可以让我自己对license部分的逻辑感到困难,也就ok了。看你的业务怎么设计的,可以单独用编译型语言做,但必须要求有限制的业务逻辑完全要使用这种语言去实现,不能和node的服务有耦合,相当于这部分业务将直接调用该服务。

@miaowing 这个不错呀,多谢

准备几套代码可以吗?试用版、普通版、专业版、企业版

@victoryboss 不太好搞,目前版本控制都是通过参数配置完成的

正好也在做这一块,目前的方案 1.生成配置文件,配置文件关键字段包括机器的硬件码,版本信息,有效时间等等 2.对配置文件进行一定的混淆,然后签名生成 license 3.使用打包工具,如 pkg、nexe等 打包 4.启动项目时校验,然后定时校验一次(校验数据库中是否符合配置文件的规定 比如:用户数等),先对 lecense进行校验,然后校验 里面的硬件码等相关字段。

但是,所有的手段都有点防君子不防小人,只不过尽量增加小人的门槛而已。一旦pkg等打包工具被攻破,就都是徒劳了。

回到顶部