我正在看这个示例代码:
authConfig = new TwitterAuthConfig(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET);
是什么阻止了某人反编译 .apk 并开始使用我的应用程序使用者密钥和秘密?
我正在看这个示例代码:
authConfig = new TwitterAuthConfig(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET);
是什么阻止了某人反编译 .apk 并开始使用我的应用程序使用者密钥和秘密?
如果它是您的密钥并且该应用程序供其他人使用,那么如果反向工程,这些将在应用程序中可用。即使您在应用程序中加密它们并在使用时解密,您也需要在您的应用程序中包含用于解密的密钥,因此确定的恶意用户也可以逆向工程和解密。
我也对此做了一些进一步的研究,因为它有点困扰我。
我的理解是,CONSUMER_KEY 和 CONSUMER_SECRET 是你的,应该受到保护。我不认为在分发给用户的任何应用程序中分发它们是一个好主意。
相反,它们可用于创建“不记名令牌”作为支持后端 Web 应用程序的一部分。可以通过从您自己的 Web 应用程序内部(即在安全环境中)调用适当的 Twitter Web API 来请求不记名令牌。
这样,您将拥有三个参与者,您的移动应用程序、您的网络应用程序和 twitter 服务。移动应用程序从您的 Web 应用程序请求不记名令牌。Web 应用程序通过 twitter REST API 进行服务器到服务器调用,从 twitter 请求不记名令牌,您的令牌和秘密仍然属于您。不记名令牌由 twitter 返回到您的 Web 应用程序。然后,您的 Web 应用程序可以将不记名令牌存储在您的 Web 应用程序会话中,并充当对 twitter 的请求的代理,并确保即使不记名令牌也保持机密。
以下是一些参考资料: http ://wickedlysmart.com/twitternews-oauth/ https://dev.twitter.com/oauth/application-only http://hayageek.com/login-with-twitter/
使用 pro Guard 工具防止反编译
基本上,要使用 pro Guard 工具,在名为 project.properties 的项目文件中设置以下值:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt
这是 pro Guard 工具的参考 http://developer.android.com/tools/help/proguard.html