【发布时间】:2015-09-11 16:42:06
【问题描述】:
当向我的 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 Key 和 API Secret 作为明文放在我的应用程序中。即使在这个official sample中,密钥也存储在BuildConfig中。
我正在使用 Proguard,但即便如此,我也不能保证一个坚定的黑客无法利用我的 API Secret。 Quora 等成熟的应用程序是否也会公开这些密钥?
有人可以发布克服此漏洞的示例,或者就 Twitter 为何这样做提供令人信服的论据吗?
相比之下,Google 和 Facebook 只需要我添加一个 AppID,我必须对我的签名证书进行哈希处理并链接这些哈希值到各自的应用程序。这是比上面更安全的数量级。
【问题讨论】:
-
来自 Fabric 的 Alex 在这里。只是想扩展一下我们为什么在示例应用程序和我们的一些文档中展示这种方法。这些示例说明了与套件集成的最简单机制。每个团队和组织在安全方面都有不同的政策,因此我们将如何保护以及将密钥和秘密存储在哪里的决定权留给了每个开发人员。不过我肯定听到了,我们可以考虑提供有关更安全选项的文档。
-
@Alexizamerican 非常感谢您的回复。我打算使用的 twitter 密钥具有 write 访问权限。在我看来,无论我制作这些字符串有多安全,我仍在向用户发送我的 Twitter API 密码。对于这个安全问题,我没有任何保证的方法,所以我想知道是否有其他方法可以做到这一点。我可以接受它是一种复杂的方法。理想情况下,该应用永远不应该访问我的秘密。
-
您好 - 我也很担心这个问题。您是否设法找到一种更安全的方式来存储密钥/秘密对?我还想知道集成 twitter 是不是一个好主意,因为这看起来完全不安全。
-
@Simon 不幸的是,没有。因此,我只是放弃了 Twitter 身份验证。但是,如果你真的需要它,你最好的选择是 dexguard,但这是有偿的。
标签: android facebook security authentication twitter