怎么能不完全把一个 node 项目给别人,比如代码混淆一部分,或者用自己的 npm 源做插件

119 天前
 289396212
3762 次点击
所在节点    Node.js
21 条回复
alanhe421
119 天前
牵扯到编译打包不就好了吗,平时访问的网站说白了代码也是给了客户端即用户。
rabbbit
119 天前
emscripten
xiangyuecn
119 天前
EndlessMemory
119 天前
看你想法,如果只是不想别人轻易弄懂你的代码,那就上 ob 混淆+反调试
taotaodaddy
119 天前
v8 jsc,我在 electron 项目中已经使用了
tcper
119 天前
虽然 wasm 不是为了代码混淆的,但是你用别的语言搞一个 wasm 包,解密确实费劲不少
BaiLinfeng
119 天前
所以这是啥保密的项目尼?这样的做法市面上多不多
wjx0912
119 天前
vx7298
119 天前
用 golang 吧,哈哈,
humbass
118 天前
同 5#,nodejs 也可以直接使用 jsc.
zsj1029334
118 天前
Bun 包子,新 js 运行时,后端的话可以直接编译单个可执行文件,比如 express 单文件运行,打包大小 90mb ,还有 nodejs22 以后版本也在往这个方向发展
visper
118 天前
v8 编译 js 成字节码。
lee88688
118 天前
@taotaodaddy 请问一下有没有相关的教程或者文档?我去官方没搜到相关的文档和教程😂。
taotaodaddy
118 天前
@lee88688

用的是这个 https://github.com/bytenode/bytenode

支持把一段代码编译

也支持整个文件编译:
npx bytenode -c ./public/a.js
然后
require('./a.jsc');
taotaodaddy
118 天前
@lee88688
忘记说了,还有一部分代码用 dll 实现了
总体来说,dll 的安全性最佳
其次是 v8 字节码 (jsc)
混淆更低

另外 node 支持 C++ addons ,可以作为 dll 的替代方案
lisxour
118 天前
目前纯代码混淆是比较稳当且成本廉价的方案,上面提到的各种编译打包的方案(我指的是所有,包括 wasm )都存在两个大问题,上面没有一个人提到:
1. 有的打包只是纯将 node 和代码打包在一起,并没有任何编译,很容易解包出来
2. 打包编译对项目要求贼高,项目是 cjs 还是 esm 都有影响,有些库打包不进去报错(包括很多常用库),跨平台兼容问题
lisxour
118 天前
@lisxour 特别是第二条,在现实项目面前,这起码扼杀了 60%-70%的 node 项目,除非你为了兼容打包,对项目结构做大改。
SchwarzeR
118 天前
核心逻辑写成 wasm ?就是有点折腾还会牵扯到别的语言[比如 rust
lee88688
117 天前
@taotaodaddy 官方文档上二进制扩展基本都是推荐 addon ,dll 这种动态链接库目前有比较好的包来加载吗?例如 Python 官方就给了一个很方便的加载和使用动态链接库的方案。
lee88688
117 天前
写成 wasm 加载肯定很方便,但是毕竟要使用其他语言编写,开发成本会增加很多。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1060610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX