有什么办法只允许我开发的 APP 访问我的 WEB 服务吗?

2021-11-11 11:12:48 +08:00
 villivateur

给客户做了一个 Windows WPF APP ,它需要访问我的 WEB 服务,但是我不想让除了这个客户端以外的其他工具访问 WEB 服务。

目前已经添加了 HTTPS 。

但是由于 APP 是用 C# 写的,反编译很方便,把认证做在 APP 内部恐怕等于没做。

7548 次点击
所在节点    信息安全
55 条回复
Xusually
2021-11-11 11:19:29 +08:00
额。。最简单的就做个登陆认证呗
clf
2021-11-11 11:19:34 +08:00
自己对客户端加壳加密呗。
AoEiuV020
2021-11-11 11:20:02 +08:00
破解只有成本问题,你 app 能访问的那别人就能模拟你的 app 去访问,不可能杜绝,考虑安全也要基于这一点再考虑,做成哪怕客户端被破解被模拟也没问题,
neptuno
2021-11-11 11:24:58 +08:00
可以考虑 1 、客户为什么用其他工具访问你的 web 服务呢(可以加一些 c#专属功能,让其他工具体验变差) 2 、如果是预防不法分子,那就混淆+各种加密,增加成本
villivateur
2021-11-11 11:31:31 +08:00
@Xusually
@neptuno
@clf

客户端需要访问 WEB 端,并请求解密一段二进制,然后把二进制烧录到下位机。主要是防止别人得到明文的二进制。
所以对用户而言,他不需要认证就可以使用 APP 。
lower
2021-11-11 11:35:37 +08:00
搞个白名单呗,,只允许客户的 ip 访问
bootvue
2021-11-11 11:38:50 +08:00
双向 ssl 验证
ch2
2021-11-11 11:41:43 +08:00
@villivateur #5 使用一次性密钥
coderluan
2021-11-11 11:42:34 +08:00
很多防盗措施都是自己想多了,对方要有这个能力这活也没必要给你了,相反如果你确认有人想盗版你的软件或者盗用你的服务,那么比起防止被盗,更好的手段是鉴别非法访问然后埋雷,设置成积累到一定程度再引爆,然后就轮到你坐地起价了。
r007b34r
2021-11-11 11:43:34 +08:00
第三方验证码接口二次认证结果生成匹配的随机浏览器 UA 指纹访问,非匹配 UA 直接拒绝响应。
villivateur
2021-11-11 11:45:10 +08:00
@lower 但这样防不了客户

@bootvue 客户端的私钥如何保密?
0o0o0o0
2021-11-11 11:48:29 +08:00
关键部分用 c++写,然后调用
billgong
2021-11-11 11:50:40 +08:00
@villivateur 加密狗或者 TPM 就是干这个的
Ediacaran
2021-11-11 11:51:33 +08:00
找几个重要的工作参数,通过页面内嵌的元素获取
jucelin
2021-11-11 11:52:38 +08:00
https 用自签证书
Ediacaran
2021-11-11 11:54:21 +08:00
@Ediacaran 好吧看错了内容。
每次发布都携带公钥。这样被破解了也知道谁干的
2kCS5c0b0ITXE5k2
2021-11-11 12:03:41 +08:00
mtls 啊.
PerFectTime
2021-11-11 12:03:51 +08:00
登记著作权,抓到就起诉
dingwen07
2021-11-11 12:07:10 +08:00
居然没有人提到 HTTPS 客户端验证?

自建一个 CS ,然后给每个客户端颁发一个证书,发现泄漏就吊销掉那个证书。
libook
2021-11-11 12:27:28 +08:00
C#有混淆工具吧,把代码混淆后可以提高逆向难度。有条件的话做加壳。同时可以加一些反调试方案,检测到被调试就直接退出,或者进入假逻辑。
HTTPS 只能起到点对点数据加密,不能做到客户端识别,你可以设置成仅信任你用的签发机构的证书,避免使用自签通配符证书来抓包。
客户端发数据给服务端的时候给 payload 做签名,签名一定要涉及时间戳,避免有破解者直接构造网络请求发给服务器。而且可以做个 ban IP 的策略,一旦接收到签名错误的请求就把 IP ban 一段时间。

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

https://www.v2ex.com/t/814636

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

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

© 2021 V2EX