Blankj / Blankj/AndroidUtilCode

UtilsFileProvider导致的隐私合规问题

Aperta
#1,782 0 commenti 1 reazione 1 assegnatario Rivendicata da @Blankj Vedi su GitHub
bug
Lingua principale
Java
Stelle
33.6k
Fork
10.6k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

utilcode版本:1.29.0
工具库aar包中的Manifest文件有一个**UtilsFileProvider**声明:
```xml



```
其关联的xml paths声明文件`util_code_provider_paths.xml`中有一个块:
```xml
...

...
```
这个路径对应的是外部存储器的根目录。UtilsFileProvider是一个ContentProvider,我们知道ContentProvider的初始化是在Application的onCreate之前的,上面这个`external-path`的声明会触发系统调用`android.os.Environment.getExternalStorageDirectory`。这个调用是早于任何用户可见的交互确认操作的。

这里问题就来了,`getExternalStorageDirectory`通常是被列为隐私敏感API的,在用户授权之前就调用,在安全检测中会被检测为违规调用。以下是以我司应用为例,通过Frida在root设备上抓到的启动调用堆栈:

![WX20230727-112509@2x](https://github.com/Blankj/AndroidUtilCode/assets/12847396/667904cf-22de-4e5e-bd66-9a33c40ebe18)

基于以上的排查思路,我尝试了将utilcode-1.29.0.aar改为zip后缀解压后,注释掉`util_code_provider_paths.xml`中的external-path声明块,再重新压缩改后缀为aar。经过验证,这样就不会在UtilsFileProvider的初始化阶段触发`getExternalStorageDirectory`调用了。

我查看了`UtilsFileProvider`的源码,看起来作者的意图只是想利用Provider的执行时机来获取ApplicationContext,实现Utils类的无感初始化。
如果确实只是出于这样的目的,建议作者大大可以考虑去掉`util_code_provider_paths.xml`中的external-path声明块,以规避国内使用可能遇到的隐私合规问题。

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.