2015-01-20 118 views
4

我期待在此示例代码:在android应用程序中使用Twitter消费者密钥和秘密硬编码有多安全?

authConfig = new TwitterAuthConfig(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET); 

是什么阻止有人从反编译的apk,并开始使用我的应用程序的消费者密钥和秘密?

+0

对于它的价值,API是Twitter的推荐面料。很难相信在Android上使用Twitter API而无需冒着consumer_key/consumer_secret风险的风险。 – 2015-01-20 23:50:48

+0

同意这个评论,并编辑我的答案,以适应。我认为这些令牌需要得到正确的保护,并且使用网络应用程序作为代理似乎被某些人使用(并且有意义) – 2015-01-21 21:50:52

+1

我不理解代理解决方案。如何使代理的调用更难以模拟然后调用Twitter API? – 2015-01-22 01:51:20

回答

0

防止反编译与亲卫队工具

基本上,要使用一个亲卫队的工具,在你的项目文件名为project.properties中的以下值:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt 

这是亲卫队工具的参考 http://developer.android.com/tools/help/proguard.html

+1

模糊不会混淆文本中的字符串或数字,如果它们被确定需要使用的应用程序?他们必须存储,以便应用程序代码可以访问它们来使用它们。 – 2015-01-20 23:01:49

1

如果这是你的钥匙和应用程序是为他人使用,那么这些将在应用程序中可用,如果逆向工程。即使您在应用中对其进行了加密并在使用时进行了解密,您也需要在应用中包含解密密钥,因此确定的恶意用户也可以进行反向工程和解密。

我对此也做了一些进一步的研究,因为它让我很困扰。

我的理解是,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/

+0

网络很简单。问题在于使用Twitter登录或从移动应用程序发送推文。 – 2015-01-22 01:54:05

相关问题