Google警告ContentProvider存在路径遍历漏洞,应如何防范?
ContentProvider 路径遍历漏洞解析
嘿,咱直接说重点——Google官方明确指出导出的ContentProvider存在路径遍历风险,具体情况是这样的:
如果你的应用里导出的ContentProvider,其
openFile()或者openAssetFile()方法没对传入的Uri参数做严格校验,那就可能踩坑了。
漏洞怎么被利用?
- 恶意应用会构造带特殊格式的Uri,比如包含
/../的路径片段,诱导你的应用返回原本不在允许访问范围内的文件的ParcelFileDescriptor。 - 一旦拿到这个描述符,攻击者就能读取你应用沙箱里的任意文件,比如用户的私人数据、配置文件、缓存信息这些敏感内容。
怎么修复?
- 首先,对传入的Uri对应的文件路径做严格校验,确保它始终在你预先设定的合法目录里,别让路径跳出限定范围。
- 可以用
File.getCanonicalPath()来解析真实路径,然后判断这个路径是否在允许的目录之下,这样能有效规避/../这类路径跳转的把戏。 - 最后,如果不是必须要导出某个ContentProvider,就别导出;要是非得导出,除了路径校验,还要做好权限控制,比如设置合适的访问权限,限制只有可信应用能访问。
内容的提问来源于stack exchange,提问作者slowcar
相关产品推荐
相关产品推荐

