iOS 开发中的一个疑惑

2015-11-07 08:37:34 +08:00
 WastedTime

一个客户端应用,比如说微博的第三方客户端,应该把 api_secret_key 这种重要的常量放到项目的哪个位置?如果被逆向了是不是这个 api_secret_key 也会泄漏?

3115 次点击
所在节点    iOS
11 条回复
XcodeUser
2015-11-07 09:02:14 +08:00
keychain
pheyer
2015-11-07 09:35:15 +08:00
@XcodeUser 越狱后 keychain 一样不安全, http://bobao.360.cn/learning/detail/324.html
WildCat
2015-11-07 09:36:49 +08:00
GPU
2015-11-07 11:03:23 +08:00
keychain 可以保存 app 的登录密码的吗原来 。

怎么用的?
squid157
2015-11-07 11:06:46 +08:00
API Key 放在客户端 这个我觉得不合适 应该放在你们的服务器吧 客户端不直接调用上面的 API 而是调用你们服务器的 API

然后再考虑你们内部的 api_key 怎么处理

这样有 key 泄露了也好处理
zts1993
2015-11-07 12:05:08 +08:00
我来看头像
WastedTime
2015-11-07 12:20:03 +08:00
@squid157 我觉得这样其实没有从本质上解决问题,不过还是感谢你
daniellu
2015-11-07 20:39:17 +08:00
@pheyer 谈越狱后 就没啥好谈的了 就算加密了 又能怎么样 ipa 发向工程 还是可以破解的
so898
2015-11-08 00:33:55 +08:00
以前针对微博(算是 OAuth 2.0 )这种验证研究过
具体来说就是你的 Secret 应该存在你的服务器上,通过那个回掉的 URL 获取用户的 Access Token
以前有些 SDK 会在用户登录的时候拦截 URI 跳转,然后通过应用拿回用户的 Access Token ,这样确实省了一个服务器成本,但是 Secret 就得保存在本地,而且傻逼微博获取 Access Token 的接口是 get 的, ssl 也无法防止用户拦截获取你的 Secret
WastedTime
2015-11-09 13:05:06 +08:00
找到一篇可供参考的解决方案: http://stackoverflow.com/questions/14778429/secure-keys-in-ios-app-scenario-is-it-safe 我想这就是上面各位说的把 secret key 放到服务器端来保护。看来服务器这一层目前是免不了了,那我干脆在服务器这层把翻墙代理一起弄了,这样就可以做出在国内可用的 Twitter 客户端了 XD ,一个思路,不一定对。
WastedTime
2015-11-09 13:13:42 +08:00

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

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

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

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

© 2021 V2EX