Blankj / Blankj/AndroidUtilCode

UtilsFileProvider导致的隐私合规问题

Abierto
#1,782 0 comentarios 1 reacción 1 asignado Reclamado por @Blankj Ver en GitHub
bug
Lenguaje dominante
Java
Estrellas
33.6k
Forks
10.6k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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声明块,以规避国内使用可能遇到的隐私合规问题。

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.