月卡机制软件的防护

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

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

有没有成熟的开源解决方案可以借鉴?或者大家在做类似月卡授权系统时,有哪些经验可以分享?
1282 次点击
所在节点    问与答
18 条回复
NewYear
67 天前
不用搞那些花里胡哨的。

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

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

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

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

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

真的能破解的让他用就行了,这样的用户不超过 1%,对收入没什么影响
wind1986
67 天前
@LLaMA2 #13 不要代入具体例子, 这其实是一个通用问题, 你问了我就说一下具体的 case.
实际上很多软件都需要类似的功能, 就是月卡制
wind1986
67 天前
@hellodigua 嗯是的, 要求不是很复杂那种, 考虑就是做个基础的防护, 因为之前没做过类似的, 所以想来取经
hellodigua
67 天前
@wind1986 你这个简单的方案就是做个后台统计,做个预警服务,判断有异常行为的 ip+机器 id ,自动 ban 掉就好了
wind1986
67 天前
@hellodigua #17 好吧, 应该是需求描述不够清楚

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

https://ex.noerr.eu.org/t/1150357

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

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

© 2021 V2EX