暴露不那么秘密的oauth密钥有什么风险?有什么变通办法吗



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

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

这样做有什么风险?只是有人可以"下载并检查"你的应用二进制文件以提取你的密钥,然后假装是你的应用程序(网络钓鱼风格)吗?还是存在其他风险?


除了风险之外,人们知道有什么变通办法或解决方案吗?

我已经看到的一个解决方案是,有些人通过自己的网站路由所有推特电话来解决这个问题,例如,在iPhone和android上只有消费者密钥(不使用消费者密钥)的OAuth推特,但这似乎很慢,成本也很高-如果可以避免的话,我宁愿不通过自己的网络服务路由所有电话(或者我误解了解决方案-它只是通过网站进行的身份验证吗?)

唯一真正的危险似乎是有人可以冒充你的应用程序并使其被推特禁止,然后你必须使用新密钥。

这篇谷歌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

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

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

最新更新