android - 用于摄像头和安全的 Android 提供程序路径
问题描述
我按照这篇文章在我的应用程序中拍照,但是在文章中作者给出了.
FileProvider 的路径。
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
与什么完全对应.
,这可能是一个安全问题吗?
解决方案
与确切对应的内容
.
它指的是您的元素标识的目录。的情况下<external-path>
,即Environment.getExternalStorageDirectory()
。
如果.
您有,而不是foo
,那将指向foo/
由您的元素标识的目录下的子目录。
这可能是一个安全问题吗?
仅当您在 Java 代码中做了一些非常奇怪的事情时。
AFileProvider
无法导出。唯一可以访问该提供商提供的内容的是:
- 你的应用
- 您从应用程序中的 Java 代码授予权限的任何应用程序
通常,您通过FLAG_GRANT_READ_URI_PERMISSION
和/或FLAG_GRANT_WRITE_URI_PERMISSION
在Intent
. Intent
这将授予对在Uri
that 内部处理 的一个应用程序的读取或写入访问权限Intent
。这是一个非常有限的权限授予,您必须成功使用FileProvider
.
如果您发现自己以其他方式授予更多应用程序和更多内容的权限,那么可能存在安全问题。但是,同样,它与您的 Java 代码相关,而不是FileProvider
元数据。
推荐阅读
- git - 如何强制更改的主历史记录基于旧历史记录特征分支?
- ios - 如何在表格的一部分中显示有限的行?
- python - 通过powershell编译python ASCII错误
- android - AOSP android.content.res.Resources$NotFoundException:资源 ID #0x0
- powershell - 循环浏览巨大的 CSV 文件
- python - Paramiko 或 sshtunnel 和 ssh-agent 无需输入密码
- javascript - 使用mapbox gl js,一些建筑物没有出现在3d中,如何解决?
- .net - Windows 在所有情况下以编程方式创建用户
- docker - Gitlab CI:找不到泊坞窗
- linux - MobaXterm:在执行前编辑粘贴的命令