xhawk
V2EX  ›  程序员

nodejs 项目私有部署如何做代码保护

By xhawk at 2024 年 5 月 29 日 · 4964 次点击

我有一个 nodejs 的项目, 是通过 server.js + express.js + sqlite + 其他 js 包 构建的一个封装的 database 的中间 www 服务层. 代码启动很简单, 就是 node server.js 就启动了一个 www 服务 , 这样子的话, 就没法保护 js 的代码, 因为, 我想把这个 www 服务层 是要进行在客户那边私有化部署, 请问:

  1. 关于 js 代码这个如何进行代码保护 ?
  2. 如果私有部署到客户那边, 里头的 sqlite 数据库如何保护,不被查看数据结构.
17 条回复  •  2024-06-08 08:21:22 +08:00
shanhuse
   1
shanhuse  
   2024 年 5 月 29 日
C++编写一个 node addon ,可以保护核心源代码,而且可以预编译放到自己服务器上,限定 node 版本。
iikebug
   2
iikebug  
   2024 年 5 月 29 日   ❤️ 1
代码混淆后,pkg 打包,还有 sqlite 加密
XG9H3BN7CWMMmnjw
   3
XG9H3BN7CWMMmnjw  
   2024 年 5 月 29 日
打包成二进制程序
lisxour
   4
lisxour  
   2024 年 5 月 29 日
@iikebug pkg 勉强可用,想编译成 v8 代码,很多问题,大部分情况下只能把混淆后的代码嵌进去,有解包可能。
StrangerA
   5
StrangerA  
   2024 年 5 月 29 日
可以用 bytenode 打包成字节码,然后分发 .jsc 文件。

虽然也是防君子不防小人。

第二个问题:sqlite3 支持上密码的,结合上一步,你把密码 hardcode 到代码中好了。
zhangky
   6
zhangky  
   2024 年 5 月 29 日
代码混淆,编译字节码
guagecool
   7
guagecool  
   2024 年 5 月 29 日
@StrangerA 为知笔记私有服务端也是 jsc 的套路,确实增加了难度

<https://guage.cool/wiz-license.html>
txzh007
   8
txzh007  
   2024 年 5 月 29 日
混淆代码+jsc electron 基本上都这么加密的
koast
   9
koast  
   2024 年 5 月 29 日
@guagecool 哈哈 以前研究一个相册软件的时候我也看到这个了 验证过基本上是可以的 但是也仅限于变成可读的字节码 能看到相关的文件名 包名 符号 但是各种调用如何复杂一点还是很难抽离出来的 静态分析起来就很费事 而且一旦不像是它这个一样可以改外边的库的话(差不多还是插桩解决的嘛)结构多构造复杂一点 逻辑就只能全靠动态调试和猜了。
amlee
   10
amlee  
   2024 年 5 月 29 日   ❤️ 1
bun 可以把 js 编译成单独可执行的二进制文件,我试过编译一个 helloworld ,100 多 m ,你可以试试

https://bun.sh/docs/bundler/executables
CHTuring
   11
CHTuring  
   2024 年 5 月 30 日
@amlee #10
长见识了,感谢。刚刚用 hono.js + bun 初步测试了一个 web 服务,初步可行。
这个方案完全可以代替我以前一些用 Go 实现的事情。
fengshils
   12
fengshils  
   2024 年 5 月 30 日
@CHTuring 同测试了一下,能否做到把整个项目打包到可执行文件里
amlee
   13
amlee  
   2024 年 5 月 30 日
@CHTuring 听了好多次 hono.js 了,但是没用过,这个框架有什么优点吗?
CHTuring
   14
CHTuring  
   2024 年 5 月 30 日
@fengshils #12
深入的我还不清楚,我目前用 bun 直接打包 bun 的 ts 项目是支持的。如果你是 node 的话并且是多文件夹项目,你可以尝试用 tsup 打包入口文件把整个项目打包成一个单文件,然后再用 bun 把这个打包成二进制试试。
CHTuring
   15
CHTuring  
   2024 年 5 月 30 日
@amlee #13 比 nest 轻,比 express 新,支持边缘服务。中间件基本官方都写了,官网随便看看,起个服务很快。
fengshils
   16
fengshils  
   2024 年 5 月 30 日
@CHTuring #14 文档里看的也都基本是单文件打包,似乎只能先想办法打包为单文件
xhawk
   17
xhawk  
OP
   2024 年 6 月 8 日
@CHTuring 好的。 这个我稍微使用了一下,的确还不错。 感谢。
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 45ms · 3.9.8.5