月卡机制软件的防护 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wind1986
V2EX    问与答

月卡机制软件的防护

  •  
  •   wind1986 65 天前 1280 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我计划开发一个带月卡机制的客户端。以前主要做 Web 项目,对客户端开发经验不多,现在考虑使用 Go 来实现,以降低被反编译的风险。

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

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

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

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

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

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

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

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