安卓应用安全指南 4.6.2 处理文件 规则书
安卓应用安全指南 4.6.2 处理文件 规则书
原书:Android Application Secure Design/Secure Coding Guidebook
译者:飞龙
遵循以下规则:
4.6.2.1 文件原则上必须创建为私有(必需)
如“4.6 处理文件”和“4.6.1.3 使用公共读/写文件”所述,无论要存储的信息的内容如何,原则上都应该将文件设置为私有。 从 Android 安全角度来看,交换信息及其访问控制应该在 Android 系统中完成,如内容供应器和服务,并且如果存在不可能的因素,则应该考虑由文件访问权限作为替代方法。
请参阅每个文件类型的示例代码和以下规则条目。
4.6.2.2 禁止创建允许来自其他应用的读写访问的文件(必需)
如“4.6.1.3 使用公共读/写文件”中所述,当允许其他应用读取/写入文件时,存储在文件中的信息无法控制。 因此,从安全和功能/设计的角度来看,不应该用公共读/写文件共享信息。
4.6.2.3 使用存储在外部存储器如 SD 卡)的文件,应该尽可能最小(必需)
如“4.6.1.4 使用外部存储器(公共读写)文件”中所述,出于安全和功能的考虑,将文件存储在外部存储器(如 SD 卡)中,会导致潜在的问题。 另一方面,与应用目录相比,SD 卡可以处理更大范围的文件,并且这是可以用于将数据带出到应用之外的唯一存储器。 所以,可能有很多情况下必须使用它,取决于应用的规范。
将文件存储在外部存储器中时,考虑到未指定的大量应用和用户可以读/写/删除文件,所以有必要考虑以下各点以及示例代码中提及的要点,来设计应用。
- 原则上,敏感信息不应保存在外部存储器的文件中。
- 将敏感信息保存在外部存储器的文件中时,应将其加密。
- 将文件保存在外部存储器时,如果被其他应用或用户篡改,将会出现问题,应该用电子签名保存。
- 当读入外部存储器中的文件时,请在验证读取的数据安全性后使用数据。
- 应该这样设计应用,假设外部存储器中的文件始终可以被删除。
请参考“4.6.2.4 应用应该在考虑文件范围的情况下设计”。
4.6.2.4 应用应该在考虑文件范围的情况下设计(必需)
保存在应用目录中的数据,被以下用户操作删除。 它与应用的范围是一致的,并且与应用的范围相比,它的独特之处在于它比应用的范围小。
- 卸载应用
- 删除每个应用的数据和缓存(设置=>应用=>选择目标应用)
保存在外部存储器中的文件,如 SD 卡,文件的范围比应用的范围长。 另外,还需要考虑以下情况。
- 文件由用户删除
- 取出/替换/取消挂载 SD 卡
- 文件由恶意软件删除
如上所述,由于文件范围取决于文件的保存位置而有所不同,不仅从保护敏感信息的角度,而且从实现应用的正确行为的角度,有必要选择文件保存位置。