暴露不那么秘密的oauth密钥有什么风险?有没有解决方法?

时间:2012-01-16 07:22:55

标签: android iphone windows-phone-7 twitter oauth

我正在开发一个使用Twitter的多平台应用程序,包括通过oAuth进行身份验证。

我查看了很多现有的应用程序,其中大部分似乎都在应用程序中嵌入了id和密钥。

这样做有什么风险?只是有人可以“下载并检查”您的应用程序二进制文件以提取您的密钥 - 然后可以伪装成您的应用程序(网络钓鱼风格)?还是有其他风险吗?


除风险外,是否有人知道的解决方法或解决方案?

我已经看到的一个解决方案是,有些人通过他们自己的网站路由所有Twitter呼叫来解决这个问题 - 例如OAuth Twitter with only Consumer Key (not use Consumer Secret) on iPhone and android - 但这看起来很慢而且代价高昂 - 我宁愿不通过我自己的网络服务来路由所有来电,如果我可以避免它(或者我误解了解决方案 - 它只是通过网站获取的身份验证) ?)

2 个答案:

答案 0 :(得分:1)

唯一真正的危险似乎是有人可以冒充您的应用并被Twitter禁止,然后您必须向用户提供新密钥。

此Google I / O谈话有一些关于混淆代码以使其更难进行逆向工程的指示。 http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

答案 1 :(得分:1)

我想到的解决方法是使用经过身份验证的Web服务调用从您的网络服务器(通过SSL)获取密钥。您可以将其缓存在客户端应用程序中(仅在内存中)。在需要时使用它而无需再次连接到服务器。

我看到的缺点是有人可能仍然可以在调试器下运行您的应用程序并检查内存并获取密钥。