我们有一个nodejs的工程,准备要交付给代理商,但是我们不希望代理商看到我们的代码,他们只需要拿到一个可执行的程序就可以了,但是由于nodejs本身的原因,js代码都是没有任何安全措施的,请教大牛有什么”安全措施”或者权限设置来对我们的代码进行保护?
PS.在这之前我们已经尝试过寻找解决方案
- nexe 这个由于不支持fork模式,不支持本地模块,所以基本可以否定了? 2.docker,还在研究是否能满足我们的需求
@fancylife 这个是一个方法,但是这样会不会产生以下问题? 1.代码多了,影响nodejs的运行效率 2.出错时,这个出错的栈信息比正常没有经过混淆的增加调试的复杂度 3.uglify-js 混淆的正确性是否有保证?
1.代码多了,影响nodejs的运行效率? 是的,的确会影响性能,毕竟压缩混淆过了。
2.出错时,这个出错的栈信息比正常没有经过混淆的增加调试的复杂度。 混淆过的代码几乎无可读性了,日志中的错误信息也不能和本地代码块对应
3.uglify-js 混淆的正确性是否有保证? 这个问题通常不存在,主要问题存在于书写代码上要更加规范,要不然uglify-js 压缩不会通过
@fancylife 以上这3点中,最想解决的就是第二点,因为程序比较复杂,出bug再所难免,所以希望能得到完好的错误栈;
不知道兄弟对docker了解不了解,能不能实现那种我们把代码环境都弄好在一个镜像里面,然后扔给运维,运维只能运行就好了,其他他都不能访问到
看什么样的代码,我的观点是基础设施开源,核心业务代码闭源。
如果你的代码仅仅是对基础设施进行更改,加上一些非核心的业务代码,比如数据库操作什么的,你给源代码,人家还懒得看呢。
核心业务代码,比如排料算法,行业相关算法等,这些用C或者C++写,给node调用,这样在保密和性能上都能保证。
@coordcn 你这个方法也是挺不错的,性能和保密都兼顾了,不过由于项目文件比较多,而且都是使用js写完了,所以在没有遇到性能问题之前,应该不会用C++来重新实现一遍的,不过对于关键的地方,确实可以使用该方法
就是不知道还有没有其他更好的方法?