You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android聊天应用文件URI解析逻辑加固及需拦截目录咨询

针对Android聊天应用文件URI解析的安全加固方案

你已经做的过滤包含本应用包名的URI,确实是防范内部敏感数据(比如消息数据库)被诱导分享的关键一步,接下来针对拦截敏感目录和更优安全方案,我整理了一些实战性的建议:

必须拦截的敏感目录/路径列表

  • 系统进程与内核敏感路径:/proc/self/ 及其所有子目录(比如/proc/self/cmdline、/proc/self/mem)、/proc/[0-9]+/ 全量进程目录、/sys/ 系统内核配置目录
  • 应用私有数据区:/data/data/ 下非本应用的所有目录、/data/user/0/ 下其他应用的私有沙箱目录、/sdcard/Android/data/ 下其他应用的私有存储目录
  • 系统关键文件与设备路径:/etc/passwd、/etc/shadow、/dev/ 下全量设备文件(比如/dev/block/ 存储块设备)、/root/ 超级用户目录(针对已Root设备)
  • 其他风险路径:包含路径遍历片段(../)的任意URI、未规范化的相对路径

更优的安全加固方案(黑名单→白名单思维升级)

比起单纯依赖黑名单拦截,白名单优先的策略能从根源上降低风险,结合以下措施效果更好:

  1. 严格限定合法访问路径:只允许解析来自用户主动选择的目录(比如聊天附件存储目录、公共下载/图片/视频目录),不在白名单内的URI直接拒绝处理
  2. 路径规范化与遍历防护:解析URI后,务必调用Path.normalize()(或Android平台的DocumentsContract标准化API)去除冗余的路径片段,彻底防范../这类路径遍历攻击
  3. 利用Scoped Storage缩小权限范围:Android 10及以上版本,优先使用分区存储(Scoped Storage),避免申请READ_EXTERNAL_STORAGE这类宽泛权限,仅访问应用自身沙箱和用户授权的特定目录
  4. Content URI来源校验:如果处理的是Content类型URI,通过ContentResolver查询时,要验证其来源的合法性(比如检查返回的文件是否在允许的白名单路径内),拒绝来自未知应用的Content URI
  5. 输入格式与权限双重校验:对接收的Intent URI做格式校验,拒绝非标准格式的URI;同时在读取文件前,检查应用是否拥有该文件的访问权限,无权限则直接终止操作
  6. 运行时安全检测:读取文件前,校验文件的类型(避免执行恶意脚本)和大小(防止读取超大文件导致崩溃),进一步降低风险

这些措施结合起来,能大幅提升你应用的文件URI解析安全性,有效抵御外部应用的诱导式攻击。

内容的提问来源于stack exchange,提问作者CalumMcCall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:19:36