保护 node-webkit 桌面应用程序中的源代码
Posted
技术标签:
【中文标题】保护 node-webkit 桌面应用程序中的源代码【英文标题】:securing the source code in a node-webkit desktop application 【发布时间】:2013-05-02 07:42:06 【问题描述】:首先,我见过nwsnapshot。它没有帮助。
我正在使用 node-webkit 将库存管理系统构建为桌面应用程序。正在构建的项目使用 compoundjs(mvc javascript 库)。其中有一个明确的文件夹结构(你知道 mvc)和其中的多个 javascript 文件。
问题是 nwsnapshot 允许应用程序只有一个快照文件,但应用程序的逻辑分布在不同 javascript 文件中的所有文件夹中。
那么在将源代码发送给客户之前,我该如何保护我的源代码?或任何其他解决方法或更聪明的方法(是的,我知道混淆)。
【问题讨论】:
【参考方案1】:您可以使用名为 nwsnapshot 的 nodewebkit 命令将 javascript 代码编译为二进制文件,该二进制文件将被加载到应用程序中,而无需指定任何 js 文件
nwsnapshot --extra-code application.js application.bin
在您的package.json
中添加:
snapshot: 'application.bin'
【讨论】:
这确实应该是公认的答案。 nwsnapshot 会将 js 源代码编译为字节码并将其注入节点进程。接受的答案使用代码压缩器和混淆器,很容易克服。 字体文件等其他资源是否可以转成二进制? 更新:使用 nwjc 。与 nwsnapshot 相比,创建的二进制文件要小得多【参考方案2】:这真的取决于你所说的“安全”。
您可以使用 Google Closure Compiler 很好地混淆您的 JavaScript 代码(并可能提高性能)。
我不知道有任何现成的解决方案可以加密/解密您的 javascript,老实说,我会质疑这样做的必要性。
有些人认为他们需要禁止查看他们的源代码,因为他们习惯于处理只向用户发送二进制文件的编译语言。事实是,对二进制代码进行逆向工程从未像某些人认为的那样困难,因此,如果有任何经济上的激励措施,运送源代码与传统的二进制文件运送几乎没有区别。
某些语言提供了对已部署资产的真正加密,例如 Microsoft 的 SLPS。在我看来,这个市场是如此之小,以至于微软把它交给了一个合作伙伴(只是我的看法)。事实是,大多数客户对获取您的源代码不感兴趣。他们对您在继续工作的同时高效地服务和支持该代码的能力更感兴趣。
【讨论】:
【参考方案3】:您可以考虑在构建过程中将JS文件合并为一个并编译。
【讨论】:
任何参考或示例或工具>? 仍然不是我所期望的,但 requirejs 现在就足够了。谢谢@pfried。 缩小代码仍然会使您的代码处于开放状态,它所做的最好的事情就是使您的代码更难阅读。请参阅以下 NorthCat 的答案以获得正确的解决方案。以上是关于保护 node-webkit 桌面应用程序中的源代码的主要内容,如果未能解决你的问题,请参考以下文章
VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用