安卓应用中个人数据应该保存在哪里?

3

我有一个问题,我需要在我的安卓设备上保存一些安全数据,这些数据是个人柜台的登录信息。你能告诉我应该把这些信息保存在简单的文本文件中吗(但是安全性如何?)或者在安卓平台上是否有MySQL数据库的类似物(我该如何访问它)?


https://dev59.com/E3RA5IYBdhLWcg3w6SRH - Anukool
这个答案与您的问题相关: https://dev59.com/E3RA5IYBdhLWcg3w6SRH#786588 - r0-
1
使用加密技术。不要在代码中硬编码密钥,而是从该特定设备的特征中派生出来。 - S.D.
4个回答

2

在Android应用中存储个人数据的最佳方式是使用具有私有模式的共享首选项,这样除了您的应用程序以外,没有人可以访问该数据。 有关共享首选项的更多详细信息,请参见 Android 开发者关于共享首选项的技巧 此处。


1
据我所知,你无法在Android设备上运行MySQL,但您可以使用SQLitetutorial)。您甚至可以尝试使用SQLCipher 将其存储在加密的数据库中。虽然有人告诉我从您的 APK 中提取访问密钥并不太困难。
当您存储密码时,请确保对其进行加密(即使您正在加密数据库)。以明文形式存储密码很少是一个好主意 ;)
无论您做什么,都不要将其存储在文本文件中!

1

您可以将简单的文本文件保存到应用程序目录中。一般来说,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文件还是将其存储在数据库中,都需要先进行加密。

请告诉我为什么我发布答案后只有2秒钟就被踩了。 - StarPinkER

0

你可以将细节存储在Android上的SQLdb中,但使用加密保存所有表单细节,并只持久化字符串。

您可以在下面的答案中看到有人使用相同的技术并使用phoneId进行加密的示例(尽管我不确定这样做是否真的安全)。

在Android本地SQLite db中存储用户名+密码是否安全?


2
使用手机ID是不安全的,因为任何能够访问设备上数据库的人都可以获取手机ID。 - Shade
是的,这正是我所想的,我不确定为什么在答案中他们推荐那样做。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接