在Android中存储API密钥足够了吗?

我正在使用Dropbox API。 在示例应用程序中,它包含以下行:

// Replace this with your consumer key and secret assigned by Dropbox. // Note that this is a really insecure way to do this, and you shouldn't // ship code which contains your key & secret in such an obvious way. // Obfuscation is good. final static private String CONSUMER_KEY = "PUT_YOUR_CONSUMER_KEY_HERE"; final static private String CONSUMER_SECRET = "PUT_YOUR_CONSUMER_SECRET_HERE"; 

我很清楚“秘密不是安全”这个咒语,混淆实际上只是稍微增加了提取密钥所需的努力量。 我不同意他们的说法:“善意是好的”。 我应该怎么做才能保护钥匙呢? 是否足够好,或者我应该考虑更精细的东西?

Solutions Collecting From Web of "在Android中存储API密钥足够了吗?"

你不能帮助它。 如果用户(攻击者)拥有受保护的数据和执行解除保护的代码,用户最终可以访问数据。 就这么简单。 在恰当的时间debugging器和断点是他们所需要的。 那样,很多空闲时间和决心。

保密是否足够满足您的需要取决于您的业务细节。 但通常在移动世界中,如果客户担心自己的数据被盗,他们会实施高级盗窃和丢失控制。 像远程擦除,强制性的屏幕locking等,我不认为这是由应用程序员复制所有的东西。

安全永远不可能是完美的,所以决定你要做多less工作取决于你。 您可以将用户密码分解为多个string,以进行简单的更改,从而提供最低程度的额外安全性,或者可以创build一种algorithm来以另一种方式表示密码(插入string中每个X空格都不使用的字符修改每个字符,也许基于数字表示)。

你必须考虑工作与收益。 如果这是一个应用程序,你和几个朋友将要使用,那么它可能并不重要。 如果这将成为1000万人使用的应用程序,那么安全显然更受关注。