我期待在此示例代码:在android应用程序中使用Twitter消费者密钥和秘密硬编码有多安全?
authConfig = new TwitterAuthConfig(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET);
是什么阻止有人从反编译的apk,并开始使用我的应用程序的消费者密钥和秘密?
我期待在此示例代码:在android应用程序中使用Twitter消费者密钥和秘密硬编码有多安全?
authConfig = new TwitterAuthConfig(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET);
是什么阻止有人从反编译的apk,并开始使用我的应用程序的消费者密钥和秘密?
防止反编译与亲卫队工具
基本上,要使用一个亲卫队的工具,在你的项目文件名为project.properties中的以下值:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt
这是亲卫队工具的参考 http://developer.android.com/tools/help/proguard.html
模糊不会混淆文本中的字符串或数字,如果它们被确定需要使用的应用程序?他们必须存储,以便应用程序代码可以访问它们来使用它们。 – 2015-01-20 23:01:49
如果这是你的钥匙和应用程序是为他人使用,那么这些将在应用程序中可用,如果逆向工程。即使您在应用中对其进行了加密并在使用时进行了解密,您也需要在应用中包含解密密钥,因此确定的恶意用户也可以进行反向工程和解密。
我对此也做了一些进一步的研究,因为它让我很困扰。
我的理解是,CONSUMER_KEY和CONSUMER_SECRET,是你的,应该受到保护。我不认为将它们分发给任何分发给用户的应用程序是一个好主意。
相反,它们可以用来创建“不记名令牌”,作为支持后端Web应用程序的一部分。可以通过在您自己的Web应用程序内调用适当的Twitter Web API来请求不记名令牌,即在安全的环境中。
通过这种方式,您将拥有三个角色,您的移动应用程序,您的Web应用程序和Twitter服务。移动应用程序请求来自您的Web应用程序的不记名令牌。 Web应用程序通过使服务器通过Twitter REST API调用服务器请求来自Twitter的不记名令牌,并且令牌和秘密保持为您的状态。不记名令牌由twitter返回给您的Web应用程序。然后,您的网络应用程序可以将不记名令牌存储在您的Web应用程序会话中,并充当代表请求推特的代理并确保即使不记名令牌仍然保密。
这里有一些参考: http://wickedlysmart.com/twitternews-oauth/ https://dev.twitter.com/oauth/application-only http://hayageek.com/login-with-twitter/
网络很简单。问题在于使用Twitter登录或从移动应用程序发送推文。 – 2015-01-22 01:54:05
对于它的价值,API是Twitter的推荐面料。很难相信在Android上使用Twitter API而无需冒着consumer_key/consumer_secret风险的风险。 – 2015-01-20 23:50:48
同意这个评论,并编辑我的答案,以适应。我认为这些令牌需要得到正确的保护,并且使用网络应用程序作为代理似乎被某些人使用(并且有意义) – 2015-01-21 21:50:52
我不理解代理解决方案。如何使代理的调用更难以模拟然后调用Twitter API? – 2015-01-22 01:51:20