Android在哪里保存个人数据?

时间:2013-03-04 11:50:47

标签: android security

我有一个两难的境地,我需要在我的Android设备上保存一些安全数据,这些数据是个人机柜的登录信息,所以请你给我一个建议,哪里更好地将这些信息保存到简单的txt文件中(但是安全性怎么样?)或者Android平台中是否存在MySQL DB模拟(以及我如何访问它)?

4 个答案:

答案 0 :(得分:3)

在Android应用程序中存储个人数据的最佳方法是使用私有模式的共享首选项,这样任何人都无法访问除应用程序之外的其他数据。 有关详细信息,请参阅Android开发人员有关共享偏好设置的提示here.

答案 1 :(得分:2)

您可以将简单的txt文件保存到应用程序目录中。通常,Android会为每个应用程序分配一个唯一的uid。每个应用程序都有自己的应用程序目录,模式为660.因此其他应用程序无法访问其内容。要编写自己的应用程序目录,可以使用以下代码:

String filename = "myfile";
String string = "Your security content";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  string = encrypt(string);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}

但是,如果目标设备是root设备,则其他应用程序可以访问您的文件。因此,更好的方法是加密数据,并将其保存到应用程序目录中。

对于数据库方法,它有同样的问题,您可以定义自己的内容提供程序而不将其导出,但在root设备上仍然容易受到攻击。所以无论你选择什么,编写txt文件或将其存储在DB上,首先加密它是必要的。

答案 2 :(得分:1)

AFAIK你不能在Android设备上运行MySQL,但你可以使用SQLitetutorial)。您甚至可以尝试使用SQLCipher将其存储在加密数据库中。虽然我被告知从你的APK中提取访问密钥并不太难。

当您存储密码时,请确保对其进行加密(即使您正在加密数据库)。将密码存储为纯文本很少是个好主意;)

无论你做什么,都不要将它存储在文本文件中!

答案 3 :(得分:0)

您可以将详细信息存储在Android上的SQLdb中,但使用加密保存所有表单详细信息,只保留字符串。

你可以在下面的答案中看到一个人做同样技术并使用phoneId进行加密的例子(虽然我不确定它到底有多安全)。

Is it safe to store username + passwords in a local SQLite db in Android?