14

第一件事是第一件事,我见过nwsnapshot。并没有帮助。保护node-webkit桌面应用程序中的源代码

我使用node-webkit作为桌面应用程序构建库存管理系统。正在构建的项目使用复合js(mvc javascript库)。它们有一个确定的文件夹结构(你知道mvc)和其中的多个JavaScript文件。

问题是nwsnapshot允许应用程序只有一个快照文件,但应用程序的逻辑遍布在不同的JavaScript文件中的所有文件夹。

因此,如何在将其发送给客户端之前保护我的源代码?或者任何其他解决方法或更聪明的方式(是的,我知道混淆)。

回答

20

可以使用nodewebkit命令调用nwsnapshot编译JavaScript代码转换成二进制将被加载到应用程序不指定任何JS文件

nwsnapshot --extra-code application.js application.bin 

package.json补充一点:

snapshot: 'application.bin' 
+3

这真的应该是被接受的答案。 nwsnapshot会将js源码编译成字节码并将其注入到节点进程中。接受的答案使用代码缩小器和混淆器,这些都很容易克服。 – 2014-12-06 15:06:25

+0

是否有可能将其他资源转换为二进制文件如字体文件? – 2015-04-07 14:58:48

+0

更新:使用[nwjc](https://github.com/nwjs/nw.js/wiki/Protect-JavaScript-source-code-with-v8-snapshot)。与nwsnapshot相比创建了更小的二进制文件 – sunnyvilles 2015-07-10 06:00:51

0

您可能会考虑在构建过程中将JS文件合并到一个文件中并编译它。

+0

任何参考或示例或工具>? – sunnyvilles 2013-05-08 07:56:29

+1

http://requirejs.org/docs/optimization.html – pfried 2013-05-08 12:21:17

+0

仍然不是我所期望的,但_requirejs_现在已经足够了。谢谢@pfried。 – sunnyvilles 2013-06-11 11:40:35

2

这真的取决于你的意思是“安全”。

通过使用Google Closure Compiler,您可以相当好地模糊JavaScript代码(以及潜在地提高性能)。

我不知道任何现成的解决方案来加密/解密您的JavaScript,老实说,我会质疑需要。

有些人认为他们需要让他们无法查看他们的源代码,因为他们习惯于处理编译语言,只向用户发送二进制文件。事实是,对二进制代码进行逆向工程并不像有些人认为的那么困难,所以如果有任何财务激励,运输源代码和传统的二进制代码之间几乎没有区别。

某些语言提供了真正的已部署资产加密,如Microsoft的SLPS。在我看来,这个市场很小,微软把它交给了一个合作伙伴(就我看来)。事实是,大多数客户不会对获取源代码感兴趣;他们对自己能够高效地服务和支持该代码的能力更感兴趣,同时他们继续工作。