node.js代码保护

qua*_*lon 11 node.js

我正在检查是否可以分发node.js应用程序封闭源.不是客户端Javascript文件,而是服务器端文件作为商业产品.我认为代码混淆/ uglification不会提供真正的隐私.也许将包装/编译源代码编译成二进制文件可能有所帮助.这可能吗?

Nic*_*can 5

我做了一些搜索NodeJS和v8代码.

首先在NodeJS存储库上,我在src/node.cc第1128行找到了首次加载源代码的位置:

Local<Value> ExecuteString(Handle<String> source, Handle<Value> filename)
Run Code Online (Sandbox Code Playgroud)

首先编译字符串,(以后执行),使用:

Local<v8::Script> script = v8::Script::Compile(source, filename);
Run Code Online (Sandbox Code Playgroud)

看一下deps/v8/include/v8.h第639行的v8源代码,Compile函数返回:

Compiled script object, bound to the context that was active
  when this function was called.  When run it will always use this
  context.
Run Code Online (Sandbox Code Playgroud)

我不确定绑定到上下文的脚本意味着什么,但我认为它不仅仅是一个二元对象,您可以保存并转移到另一台机器而无需传输整个上下文.

编辑:深入研究v8.h,还有一个ScriptData类,它预先编译脚本以使编译更快,并且可以与Script类一起使用,但Script类仍然需要原始源代码加载脚本.(可能在打印错误时,它知道错误的来源.)

总之,如果没有太多工作,我认为这是不可能的.