1
msg7086 2016-05-17 20:29:25 +08:00
用 https 可以防止请求被窥探。
|
3
Slienc7 2016-05-17 20:58:39 +08:00
这类第三方的、需要通过 key 访问的服务,由服务器统一处理请求,然后转给客户端。
|
4
weizhixiang OP @Slienc7 还要搞服务器啊
|
5
luili 2016-05-17 21:30:30 +08:00 via iPhone
传给自己的服务端,由服务端转向第三方
|
7
qqmishi 2016-05-17 22:22:50 +08:00 via Android
加个中转,这样只能抓到中转服务器的数据包,没有 key
|
8
tolbkni 2016-05-17 22:35:15 +08:00 via Android
nginx + lua ,转发到 API 服务
|
9
Comdex 2016-05-17 22:39:51 +08:00
通联股票数据,楼主我想问调用的 url 和端口是啥,是所有开发者都一样么?
|
11
azuis 2016-05-18 01:36:55 +08:00 via iPhone
@66CCFF 先装一个自签的根证书在手机上。然后用这个根证书去签那个 api 域名的 SSL 证书。再架个代理用你自签的证书去替换原有证书就可以了。你自己有 key 所以可以直接解出所有内容
|
13
mornlight 2016-05-18 01:56:28 +08:00
如果是不可公开的 key 必须走自己服务端,没别的路子。
|
14
yyfearth 2016-05-18 07:10:33 +08:00 1
@msg7086 我觉得他只是想说 https 照样可以抓包 不能完全不透露 Key 的 就像 @azuis 和 @pheyer 说的那样
@66CCFF 如果是网络上的中间人攻击者 如果你用 https 来保证 key 不泄漏 那么有几种情况: 1 如果你用的不是可信机构签发的证书 或者你不在客户端校验证书 中间人完全可以伪造证书来解密内容 2 就算你用了可信证书 如果你不在客户端校验证书 仍然没办法保证不被盗取: 因为就像 11L 所说 开发者经常搭建本地代理然后信任自签证书来绕过 这样就可以得到加密内容了 如果说网上传的 key 是处理过的 不是原始 key 那么再退一步来讲 因为客户端运行在别人手中 你再怎么样藏起来 总有办法挖出来的 所以 如果通信必须要 key 而且 key 不能公开 那么只有搭建自己的服务区来解决了 |
15
Sharuru 2016-05-18 08:22:47 +08:00 via Android
然后问题就变成了如何保证客户端和自己的服务端通信的时候保证内容不会泄漏了 233
|
16
weizhixiang OP @Comdex 我先申请了个个人的,给了个 token ,免费用一年
|
17
weizhixiang OP @Sharuru 内容泄露,关系不大,隔段时间换 key ,只要用我的客户端就可以了
|
18
wesley 2016-05-18 09:47:11 +08:00
不在网络中传输 key, 只传输 key 的 hash 值, 然后使用 key 作为密钥给传输数据签名:
head: KeyHash: hash(key) Signature: hash(body_content+key) body: body_content |
19
msg7086 2016-05-18 09:53:23 +08:00
@yyfearth 于是我回头看了一眼,发现好像和我第一眼看到的帖子不一样了,不知道是看帖的时候还在睡眠状态,还是我回帖完了以后楼主又改了帖子。
|
20
Comdex 2016-05-18 10:03:21 +08:00
@weizhixiang 我也是,但是不太明白调用的 url 及端口是 example 的那个么?只知道 api 的接口,如 /v2/api/getStock ,那么完整的 url 是?
|
21
sunus 2016-05-18 10:28:40 +08:00
上面的歪楼了吧。楼主问的是 Android 很容易被反编译拿到 KEY 。跟通信过程中被拦截到 KEY 不是一个问题
|
22
lyragosa 2016-05-18 10:30:17 +08:00
key 不要放客户端啊。自己搭个服务器中转一下不就行了……
|
24
weizhixiang OP @yyfearth 现在应该不会歪了
|