我们正在考虑将 node.js 用于我们的下一个服务器端应用程序。但是我们不希望我们的客户能够查看我们应用程序的代码。我们可以以编译的形式部署用 node.js 编写的应用程序吗?如果是,那么如何?
4 回答
但是我们不希望我们的客户能够查看我们应用程序的代码。
如果您将代码发送给您的客户,他们将能够“查看您的应用程序代码”。从技术上讲,“运行代码”的过程就是“查看应用程序的代码”。
拥有完全编译的代码版本肯定会让人感觉“更安全”,但他们仍然拥有某种可用形式的代码副本。他们仍然可以逆向工程或做其他事情。这些东西真的归结为许可证。
这是一个相关的答案。他的报价是:
写许可证并请律师追捕违规者
否则,您应该自己托管这些东西并允许公众访问。
任何形式的混淆、缩小、编译都将成为“窃取代码”过程中的一个减速带。简单地拥有法律追索权可能要好得多。
我不相信这是可能的。我的意思是,从技术上讲,我猜您可以将所有内容编写为本地 C++ 扩展,但这会破坏使用 node.js 的目的。
如前所述,Node.js 中没有真正的编译,因为 nod 可执行文件基本上是即时编译 javascript 代码。
许多开发人员使用 Google 的Closure Compiler,它实际上只是“缩小”——删除注释、空格等——和“优化”——将 javascript 代码转换为更高效的 javascript。但是,生成的代码通常仍然是可解析的 javascript 代码(尽管相当难以阅读!)。查看此相关流以获取更多信息:Getting closure-compiler and Node.js to play nice
几个可能有用的选项:
- 为“专有”业务逻辑开发自定义模块并将其托管在您的安全服务器上
- 将“专有”业务逻辑包装到 java 类或可执行文件中,在 Node.js 中作为外部进程调用
- 将“专有”业务逻辑编码为在 Node.js 调用的单独应用程序服务器上可用的已编译 Web 服务。
由您来定义应用程序的哪些部分应被视为“专有”,但作为一般规则,我不会将 HTML 和相关的 javascript(发送到我们的浏览器)归类为“专有”。我的建议是在这里要明智。
最后,我发现以下流有一个有趣的方法,可能会有所帮助,但它相当先进并且可能有相当多的错误:NodeJS 应用程序的安全分发
希望有帮助...