保护Android上的Twitter密钥

时间:2015-06-25 07:43:58

标签: android facebook security authentication twitter

在我的Android应用程序中添加Twitter身份验证时,转到Twitter dev,我惊讶地发现我必须像这样初始化Twitter的Fabric

import io.fabric.sdk.android.Fabric;
import com.twitter.sdk.android.Twitter;
import com.twitter.sdk.android.core.TwitterAuthConfig;
...

@Override
public void onCreate() {
    super.onCreate();

    TwitterAuthConfig authConfig = 
                new TwitterAuthConfig("consumerKey",
                                     "consumerSecret");
    Fabric.with(this, new Twitter(authConfig));
}

他们官方推荐我将 API密钥 API密码作为明文放在我的应用中。即使在此 official sample 中,密钥也会存储在BuildConfig中。

我正在使用 Proguard ,但即便如此,我无法保证确定的黑客无法利用我的 API Secret 。像 Quora 这样的已建立的应用程序是否也公开了这些密钥?

有人可以发布一个例子来克服这个漏洞,或者就推特为什么这样做提出令人信服的论据吗?

相比之下, Google Facebook 只需要我添加 AppID ,我不得不哈希我的签名证书并链接哈希到各个应用程序。这比以上更安全。

2 个答案:

答案 0 :(得分:2)

Proguard will not obfuscate string literals. Instead you could store the secret as an encrypted string (maybe using AES) and decrypt when required. Alternatively, commercial programs such as Stringer or Dexguard provide string obfuscation.

答案 1 :(得分:0)

您可以在res /目录中创建一个secrets.xml文件,并使用这些值的常量并从您的活动中引用它们。