nodejs 项目私有部署如何做代码保护 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xhawk
V2EX    程序员

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

  •  
  •   xhawk 2024-05-29 09:10:27 +08:00 3773 次点击
    这是一个创建于 502 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 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-05-29 09:16:26 +08:00
    C++编写一个 node addon ,可以保护核心源代码,而且可以预编译放到自己服务器上,限定 node 版本。
    iikebug
        2
    iikebug  
       2024-05-29 09:20:39 +08:00   1
    代码混淆后,pkg 打包,还有 sqlite 加密
    XG9H3BN7CWMMmnjw
        3
    XG9H3BN7CWMMmnjw  
       2024-05-29 09:22:39 +08:00
    打包成二进制程序
    lisxour
        4/span>
    lisxour  
       2024-05-29 10:01:35 +08:00
    @iikebug pkg 勉强可用,想编译成 v8 代码,很多问题,大部分情况下只能把混淆后的代码嵌进去,有解包可能。
    StrangerA
        5
    StrangerA  
       2024-05-29 10:08:19 +08:00
    可以用 bytenode 打包成字节码,然后分发 .jsc 文件。

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

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

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

    https://bun.sh/docs/bundler/executables
    CHTuring
        11
    CHTuring  
       2024-05-30 14:33:50 +08:00
    @amlee #10
    长见识了,感谢。刚刚用 hono.js + bun 初步测试了一个 web 服务,初步可行。
    这个方案完全可以代替我以前一些用 Go 实现的事情。
    fengshils
        12
    fengshils  
       2024-05-30 15:48:58 +08:00
    @CHTuring 同测试了一下,能否做到把整个项目打包到可执行文件里
    amlee
        13
    amlee  
       2024-05-30 16:00:50 +08:00
    @CHTuring 听了好多次 hono.js 了,但是没用过,这个框架有什么优点吗?
    CHTuring
        14
    CHTuring  
       2024-05-30 16:13:33 +08:00
    @fengshils #12
    深入的我还不清楚,我目前用 bun 直接打包 bun 的 ts 项目是支持的。如果你是 node 的话并且是多文件夹项目,你可以尝试用 tsup 打包入口文件把整个项目打包成一个单文件,然后再用 bun 把这个打包成二进制试试。
    CHTuring
        15
    CHTuring  
       2024-05-30 16:22:20 +08:00
    @amlee #13 比 nest 轻,比 express 新,支持边缘服务。中间件基本官方都写了,官网随便看看,起个服务很快。
    fengshils
        16
    fengshils  
       2024-05-30 16:38:14 +08:00
    @CHTuring #14 文档里看的也都基本是单文件打包,似乎只能先想办法打包为单文件
    xhawk
        17
    xhawk  
    OP
       2024-06-08 08:21:22 +08:00
    @CHTuring 好的。 这个我稍微使用了一下,的确还不错。 感谢。
    关于     帮助文档   &nbs; 自助推广系统     博客     API     FAQ     Solana     3137 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 12:21 PVG 20:21 LAX 05:21 JFK 08:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86