
查了两天,整个网络都搜遍了,
官网的描述十分含糊,说是通过临时访问权限,提升安全性。抄来抄去的网文就更不用说了,只管是什么、怎么做,对为什么避而不谈。
那么问题来了,这个 “安全性” 究竟是对谁而言的?
appA 将内容分享给 appB,通过 FilProvider 究竟是为了保护 appA 旗下的内容,还是 appA 分享出去的这个内容本身,还是 防止 appA 借着这机会动态申请权限 而获得持久的外部存储访问权限 从而日后偷偷做坏事?
它所谓的安全性,究竟主语是谁,究竟是在防什么???
就是对这个最根本的问题纠缠不清,先立个帖。有具体探究过的 v 友,还请不吝赐教!
1 kzaemrio 2020-02-22 23:25:32 +08:00 大概比放开 sdcard 大家随便来强一些吧 |
2 300 2020-02-22 23:31:11 +08:00 via Android https://developer.android.com/reference/android/support/v4/content/FileProvider In comparison, to control access to a file:/// Uri you have to modify the file system permissions of the underlying file. The permissions you provide become available to any app, and remain in effect until you change them. This level of access is fundamentally insecure. 应该是 AndroidX 了现在,不过都一样,就是原来 file 文件谁都能用,content 是给谁谁才能用(我是这么理解的) 记得有个 bug,带有浏览器功能的应用,只要打开 file://这种网页就能看到该应用内的所有数据文件(/data/data/xxx.) |
3 KunMinX OP |
4 crayygy 2020-02-22 23:39:50 +08:00 via iPhone 换个角度想,App A 要分享一个文件 F 给 App B,对于 A 来说,要么把这个文件写到一个外部路径,让 B 去获取( A 需要文件权限), 要么 A 把自己的内部文件权限给 B (基本上不可能也不安全)。在这种情况下,FileProvider 表示,你可以给一个只有 A 你自己能明白的路径给 B,并且只给 B 这一个路径的权限,这样 B 在读取的时候就可以安全的拿到且只能拿到这一个文件了。 所以说保护谁这个问题, 一方面保护了用户,不是每个需要分享功能的 app 都必须给文件权限, 另一方面保护了 A,因为它可以很方便的控制自己对外部暴露的内容,对于 B 而言,这种方式更像是一个黑盒,不需要关注对方有什么其他的东西,给我这个我就用这个。 个人拙见,希望有所帮助。 |