1
XYxe 2017-07-07 21:05:46 +08:00 1
一次请求换一个 Token
|
2
lerry 2017-07-07 21:13:11 +08:00 via iPhone
https 应该抓不到吧
|
3
prasanta 2017-07-07 21:19:30 +08:00 via Android
证书呀,就像银行登陆的证书
|
5
TJT 2017-07-07 22:18:55 +08:00
证书,请求签名
|
6
jinganchuqi 2017-07-07 22:21:03 +08:00 via Android 1
加个签名不就行了,token 参与签名。
|
7
akira 2017-07-07 22:37:16 +08:00 1
首先,任何可以在用户机器上运行的代码都是可破解的,不管你如何限制多人访问,总是有办法可以绕过的。
一个比较简单粗暴的方案,提交的接口参数里面,增加一个加密过的 自增字段。 然后统计自增数字有冲突的情况,基本上,就可以知道哪个账号是有多开行为了的。 |
8
ipconfiger 2017-07-07 23:02:23 +08:00
@est 试过这种方案, 不行, 网络抖动一些就隔屁了.
|
9
tomczhen 2017-07-07 23:20:27 +08:00 2
改成按 API 调用次数收费。:doge:
讲正经的。 使用 jwt 来解决,在 jwt 存放用户名,token 和一个随机值(比如 uuid ),服务端保存下发的 jwt,推荐 redis。 jwt 过期时间设定要小一些,比如 1 分钟,甚至 30 秒,如果网络不稳定可以适当延长有效时间。 API 发现 JWT 过期时,重新生成一个 JWT 返回即可,同样服务端要保存。 这里 jwt 和鉴权 token 可以没有关联(取决于你的业务),jwt 可以过期,但必须是有合法签名,如果业务允许,你仍然可以让他继续。 如果使用抓包的方式获取 jwt 和 token,然后多处使用,那么在这个 jwt 过期后必然会产生,一个用户有多个不同的 jwt 同时有效的情况。 |
10
DCjanus 2017-07-08 04:46:07 +08:00 1
使用 SSL pinning 技术增大抓包难度。
自增字段、加密网卡号等方式都可以增加破解难度。 破解难度高到一定程度即可,再费劲就得不偿失了。 |
11
devilyaos 2017-07-08 07:56:08 +08:00 via iPhone
所以好些软件绑死 mac...
|
12
jininij 2017-07-08 08:58:30 +08:00 via Android 1
如果客户知道你 API 协议的细节,就可以搭建 API 中心,所有的客户端调用接口,都不是直接调用你的服务器接口,而是调用 API 中心的接口,API 中心对数据进行签名,使用队列一个一个地请求。你在服务器端没有任何办法可以知道,真正使用你服务的是谁。
你能做的,只有尽可能让你的 API 不会被挖出来了。 |
13
vingz 2017-07-08 09:04:24 +08:00 via Android
做头部数据的 hash ? hash 不一致就无效了,https 更好了
|