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

176 天前
 xhawk

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

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

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

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

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

https://bun.sh/docs/bundler/executables
CHTuring
175 天前
@amlee #10
长见识了,感谢。刚刚用 hono.js + bun 初步测试了一个 web 服务,初步可行。
这个方案完全可以代替我以前一些用 Go 实现的事情。
fengshils
175 天前
@CHTuring 同测试了一下,能否做到把整个项目打包到可执行文件里
amlee
175 天前
@CHTuring 听了好多次 hono.js 了,但是没用过,这个框架有什么优点吗?
CHTuring
175 天前
@fengshils #12
深入的我还不清楚,我目前用 bun 直接打包 bun 的 ts 项目是支持的。如果你是 node 的话并且是多文件夹项目,你可以尝试用 tsup 打包入口文件把整个项目打包成一个单文件,然后再用 bun 把这个打包成二进制试试。
CHTuring
175 天前
@amlee #13 比 nest 轻,比 express 新,支持边缘服务。中间件基本官方都写了,官网随便看看,起个服务很快。
fengshils
175 天前
@CHTuring #14 文档里看的也都基本是单文件打包,似乎只能先想办法打包为单文件
xhawk
166 天前
@CHTuring 好的。 这个我稍微使用了一下,的确还不错。 感谢。

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

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

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

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

© 2021 V2EX