0

我们正在考虑将 node.js 用于我们的下一个服务器端应用程序。但是我们不希望我们的客户能够查看我们应用程序的代码。我们可以以编译的形式部署用 node.js 编写的应用程序吗?如果是,那么如何?

4

4 回答 4

3

也许你可以混淆你所有的代码......我知道这不像编译,但至少,它会避免 99% 的客户查看代码:D

这是另一个主题:如何混淆(保护)JavaScript?

祝你好运

于 2012-10-01T14:49:00.940 回答
3

但是我们不希望我们的客户能够查看我们应用程序的代码。

如果您将代码发送给您的客户,他们将能够“查看您的应用程序代码”。从技术上讲,“运行代码”的过程就是“查看应用程序的代码”

拥有完全编译的代码版本肯定会让人感觉“更安全”,但他们仍然拥有某种可用形式的代码副本。他们仍然可以逆向工程或做其他事情。这些东西真的归结为许可证。

这是一个相关的答案。他的报价是:

写许可证并请律师追捕违规者

否则,您应该自己托管这些东西并允许公众访问。

任何形式的混淆、缩小、编译都将成为“窃取代码”过程中的一个减速带。简单地拥有法律追索权可能要好得多。

于 2012-10-01T20:05:15.387 回答
2

我不相信这是可能的。我的意思是,从技术上讲,我猜您可以将所有内容编写为本地 C++ 扩展,但这会破坏使用 node.js 的目的。

于 2012-10-01T14:45:13.950 回答
1

如前所述,Node.js 中没有真正的编译,因为 nod 可执行文件基本上是即时编译 javascript 代码。

许多开发人员使用 Google 的Closure Compiler,它实际上只是“缩小”——删除注释、空格等——和“优化”——将 javascript 代码转换为更高效的 javascript。但是,生成的代码通常仍然是可解析的 javascript 代码(尽管相当难以阅读!)。查看此相关流以获取更多信息:Getting closure-compiler and Node.js to play nice

几个可能有用的选项:

  1. 为“专有”业务逻辑开发自定义模块并将其托管在您的安全服务器上
  2. 将“专有”业务逻辑包装到 java 类或可执行文件中,在 Node.js 中作为外部进程调用
  3. 将“专有”业务逻辑编码为在 Node.js 调用的单独应用程序服务器上可用的已编译 Web 服务。

由您来定义应用程序的哪些部分应被视为“专有”,但作为一般规则,我不会将 HTML 和相关的 javascript(发送到我们的浏览器)归类为“专有”。我的建议是在这里要明智。

最后,我发现以下流有一个有趣的方法,可能会有所帮助,但它相当先进并且可能有相当多的错误:NodeJS 应用程序的安全分发

希望有帮助...

于 2012-10-02T04:52:14.470 回答