0

在我的应用程序中,我有一个config.xml正在解析的文件。在这个配置文件中,有一些我看不到最终用户以纯文本形式看到的数据。在这种特殊情况下,邮件帐户的密码。该config.xml文件保存到具有路径的文件夹中

/mnt/sdcard/my_application_folder/config.xml  

我查找了一些类提供的方法File

  • setReadable(布尔值)
  • setExecutable(布尔值)
  • setWritable(布尔值)

我试图以这种方式应用这些方法:

String path = folder.getPathToNode() + "/config.xml";
configFile = new File(path);

if(configFile.exists()) {
    configFile.setReadable(false);
    configFile.setExecutable(true);
    configFile.setWritable(false);
}

我想你们中的一些人会建议我将这些数据存储在 中SharedPreferences,但我的应用程序有两个用户组,最终用户管理员,他们将config.xml在他的计算机上编辑,并将文件传输到手机。

我可以打开Astro File Manager并查看config.xml纯文本,但我不应该因为文件不可读?

config.xml如果我应用上面的值,我可以解析这个吗?有人可以为这个“安全问题”提出另一种解决方案吗?

4

2 回答 2

2

不要将敏感数据保存在 SD 卡/外部存储上。任何应用程序都可以读取它,即使没有特殊权限。找到另一种更新设置的方法(通过 UI、服务器推送等),或者至少想办法加密或混淆敏感信息。外部存储通常是 VFAT(或模拟它),因此您无法设置文件权限。

于 2012-10-02T09:03:11.170 回答
0

除了 Nikolay,以纯文本形式存储密码绝不是一个好主意。我不是 android 专家,但我确信他们提供 api 来 [en/de]crypt 数据。

于 2012-10-02T09:15:43.817 回答