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