在android中存储安全数据

时间:2014-05-09 03:11:26

标签: android security

我在我的Android应用中使用OAuth 2登录。用户名和密码不存储在设备上。但是我在类Constants中的源代码本身中包含了三个字符串参数。

public class Constants{
public static String redirectUri = "http://someurl/users/me";
public static String clientId = "my-android-app";
public static String clientSecret =    "asdfasf";

}

我在登录期间使用Constants.clientId访问这些参数。我的问题是我的数据存储方式是否安全?我是否必须加密这3个数据。我无法将这些数据存储在共享首选项或数据库中,因为在root设备中可以查看此数据。

1 个答案:

答案 0 :(得分:1)

OAuth 2.0 Threat Model and Security Considerations(rfc6819)已将“获取客户机密”列为威胁。

正如Google doc使用OAuth 2.0 for Installed Applications所说:

  

这些应用程序分发到各台计算机,并假设这些应用程序无法保密。

事实上,没有客户“秘密”。试图在已安装的应用程序中混淆秘密是徒劳的,因为可以使用大量的逆向工程和调试工具来恢复机密。

当然,你应该尽力保护秘密,但最后,一个积极性高的黑客可以随时在已安装的应用程序中获取它。所以这是秘密与提取难度的价值。客户端密钥的值是模拟应用程序。它不提供对用户数据的任何访问。

我的建议: 只要把风险继续下去并混淆它。或者你可以 考虑使用代理模式(move the secret to a web server acting as an API proxy)。