V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xhawk
V2EX  ›  程序员

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

  •  
  •   xhawk · 20 天前 · 2443 次点击

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

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

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

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

    https://bun.sh/docs/bundler/executables
    CHTuring
        11
    CHTuring  
       19 天前
    @amlee #10
    长见识了,感谢。刚刚用 hono.js + bun 初步测试了一个 web 服务,初步可行。
    这个方案完全可以代替我以前一些用 Go 实现的事情。
    fengshils
        12
    fengshils  
       19 天前
    @CHTuring 同测试了一下,能否做到把整个项目打包到可执行文件里
    amlee
        13
    amlee  
       19 天前
    @CHTuring 听了好多次 hono.js 了,但是没用过,这个框架有什么优点吗?
    CHTuring
        14
    CHTuring  
       19 天前
    @fengshils #12
    深入的我还不清楚,我目前用 bun 直接打包 bun 的 ts 项目是支持的。如果你是 node 的话并且是多文件夹项目,你可以尝试用 tsup 打包入口文件把整个项目打包成一个单文件,然后再用 bun 把这个打包成二进制试试。
    CHTuring
        15
    CHTuring  
       19 天前
    @amlee #13 比 nest 轻,比 express 新,支持边缘服务。中间件基本官方都写了,官网随便看看,起个服务很快。
    fengshils
        16
    fengshils  
       19 天前
    @CHTuring #14 文档里看的也都基本是单文件打包,似乎只能先想办法打包为单文件
    xhawk
        17
    xhawk  
    OP
       10 天前
    @CHTuring 好的。 这个我稍微使用了一下,的确还不错。 感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2973 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:10 · PVG 22:10 · LAX 07:10 · JFK 10:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.