V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wind1986
V2EX  ›  问与答

月卡机制软件的防护

  •  
  •   wind1986 · 28 天前 · 1190 次点击
    我计划开发一个带月卡机制的客户端。以前主要做 Web 项目,对客户端开发经验不多,现在考虑使用 Go 来实现,以降低被反编译的风险。

    目前在月卡验证逻辑上还没有完全想好,初步思路是:
    • 机器码绑定,确保授权与设备对应
    • HTTP 请求 + RSA 加密,防止请求被篡改

    有没有成熟的开源解决方案可以借鉴?或者大家在做类似月卡授权系统时,有哪些经验可以分享?
    18 条回复    2025-08-06 16:20:37 +08:00
    NewYear
        1
    NewYear  
       28 天前
    不用搞那些花里胡哨的。

    长连接,按账号授权,一个账号只能一个连接,自动踢掉上一个连接。

    让用户自己可以看到登录情况,有问题他自己重设一下就行。
    wind1986
        2
    wind1986  
    OP
       28 天前
    @NewYear 嗯, 也是一个思路, 不过这样会服务端的要求相对会高一点, 包括维护成本, 还是会考虑稍微简单一点的
    NewYear
        3
    NewYear  
       28 天前
    @wind1986 #2

    用不了几个资源的,你又不是有几十亿用户,你自己算算,能用掉多少资源呢。

    你那种情况什么绑定硬件啥的,虚拟机可以直接克隆“硬件层”的你知道吧,直接一个虚拟机分享出去……
    wind1986
        4
    wind1986  
    OP
       28 天前
    @NewYear #3 哈哈, 那倒也没这么高的标准, 基本满足就好.
    NavilleZhang
        5
    NavilleZhang  
       28 天前   ❤️ 1
    走 HSM + Hardware Attestation
    NavilleZhang
        6
    NavilleZhang  
       28 天前
    没有单独的用户凭据, 用户用自己的平台安全芯片 (X86 系列的片上 TPM 或者 Yubikey 或者 AppleSilicon 的 SEP)生成一组新的公私钥和对应的 Attestation 证书, 你收到之后验证 Attestation 证书确实是属于片上安全芯片的, 然后直接对对应的密钥加白名单
    LLaMA2
        7
    LLaMA2  
       28 天前
    你的软件是做什么用途的,不同类型的也许有更优雅的方案。
    wind1986
        8
    wind1986  
    OP
       28 天前
    @NavilleZhang @LLaMA2 应该是我没有完全表达清除, 就是普普通通的工具软件, 不需要很高的安全性, 凑活就好.
    希望稍微上点难度, 但是也不需要那么复杂的那种, 希望能限制住中级开发
    LLaMA2
        9
    LLaMA2  
       28 天前
    @wind1986 我是想看你的回答评估一下是否可以全部服务器端实现,这样就不用担心破解的事情了
    wind1986
        10
    wind1986  
    OP
       28 天前
    @LLaMA2 #9 嗯, 我信息给的还是不够, 主要是因为依赖本地资源做一些处理, 做客户端其实就是因为纯服务端被限制了一些功能, 所以才需要把逻辑落到客户端. 这个是确定的
    LLaMA2
        11
    LLaMA2  
       28 天前
    @wind1986 也不一定,你可以把你用到的本地资源和处理方式粗略地表达出来,不用告诉我你的商业秘密,V 站人才多,也许大家有办法,单纯的本地加密直接加壳就好啦
    wind1986
        12
    wind1986  
    OP
       28 天前
    @LLaMA2 #11 没有商业密码啦, 其实就是类似一个小红书的发布系统, 走服务端会消耗服务端贷款, 用服务端地址, 所以我们考虑用客户端资源, 用他们 ip 去发布, 所以这些代码逻辑都需要在本地
    LLaMA2
        13
    LLaMA2  
       28 天前
    @wind1986 你可能模拟小红书登陆,读取用户本地图文视频,发布。
    这里大概率要逆向小红书的登陆验证,你完全可以在服务器上计算登陆验证加密,然后回传给客户端,
    你说的消耗服务器带宽,应该就是发布的时候要传图文视频,鉴于这个没有太多的逆向难度,就不用服务器。

    所以我的建议是服务器计算最有价值的小红书登陆验证部分,其他的放客户端,加不加密都无所谓。还要搞清楚登陆验证通过后的 cookie,token 有多少的有效期,能不能在用户发布后或 1 分钟后主动注销登陆,避免用户拿你的客户端登陆后获取 cookie 、token 什么的给其他人用,等于别人用你的客户端二次包装
    hellodigua
        14
    hellodigua  
       28 天前
    我之前做的一个项目也会考虑这种情况,后来上线半年多之后才意识到,压根没必要做的太复杂,稍微来点难度提高破解的成本就好了

    真的能破解的让他用就行了,这样的用户不超过 1%,对收入没什么影响
    wind1986
        15
    wind1986  
    OP
       28 天前
    @LLaMA2 #13 不要代入具体例子, 这其实是一个通用问题, 你问了我就说一下具体的 case.
    实际上很多软件都需要类似的功能, 就是月卡制
    wind1986
        16
    wind1986  
    OP
       28 天前
    @hellodigua 嗯是的, 要求不是很复杂那种, 考虑就是做个基础的防护, 因为之前没做过类似的, 所以想来取经
    hellodigua
        17
    hellodigua  
       28 天前
    @wind1986 你这个简单的方案就是做个后台统计,做个预警服务,判断有异常行为的 ip+机器 id ,自动 ban 掉就好了
    wind1986
        18
    wind1986  
    OP
       28 天前
    @hellodigua #17 好吧, 应该是需求描述不够清楚
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:17 · PVG 07:17 · LAX 16:17 · JFK 19:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.