清理 Intent 文件 URI
Sanitizing Intent file URIs
我有一个 Android 聊天应用程序,它接受大量可能的共享意图。我正在尝试强化我的应用程序中文件 URI 的解析逻辑。例如,包含我的应用程序包名称的 URI 会被过滤,否则外部应用程序可能会尝试诱骗用户与其他人共享整个消息数据库。我还想阻止读取 /proc/self
和类似内容的尝试。我正在寻找一个应该被阻止的目录列表,或者更好的是,一个为我执行此清理的库。另一种选择是使用外部缓存和目录的白名单,我可以从 Android 系统中获取。谁能给我建议哪个选项最好?或者任何人都可以给我一份与 proc
相似的目录列表,这些目录至少应该被列入黑名单吗?
为了结束起见,我将 post 我采用的解决方案。我阻止了包括 /proc/
和我的应用程序包名称在内的所有内容,如下所示:
val path = uri.getPath
if (path.contains(context.getPackageName) || path.startsWith("/proc")) {
None
} else {
Some(u)
}
请注意,一般情况下进行清理时,您希望在任何其他转换之后尽可能晚地执行它,以降低您的步骤被绕过的风险。
我有一个 Android 聊天应用程序,它接受大量可能的共享意图。我正在尝试强化我的应用程序中文件 URI 的解析逻辑。例如,包含我的应用程序包名称的 URI 会被过滤,否则外部应用程序可能会尝试诱骗用户与其他人共享整个消息数据库。我还想阻止读取 /proc/self
和类似内容的尝试。我正在寻找一个应该被阻止的目录列表,或者更好的是,一个为我执行此清理的库。另一种选择是使用外部缓存和目录的白名单,我可以从 Android 系统中获取。谁能给我建议哪个选项最好?或者任何人都可以给我一份与 proc
相似的目录列表,这些目录至少应该被列入黑名单吗?
为了结束起见,我将 post 我采用的解决方案。我阻止了包括 /proc/
和我的应用程序包名称在内的所有内容,如下所示:
val path = uri.getPath
if (path.contains(context.getPackageName) || path.startsWith("/proc")) {
None
} else {
Some(u)
}
请注意,一般情况下进行清理时,您希望在任何其他转换之后尽可能晚地执行它,以降低您的步骤被绕过的风险。