Blankj / AndroidUtilCode

:fire: Android developers should collect the following utils(updating).
https://blankj.com/2016/07/31/android-utils-code/
Apache License 2.0
33.32k stars 10.69k forks source link

NetworkUtils安全检测到动态注册广播风险 #1794

Open SiberiaDante opened 10 months ago

SiberiaDante commented 10 months ago

描述 Bug

简洁地描述下 Bug。

相关代码

文件: com.blankj.utilcode.util.NetworkUtils$NetworkChangedReceiver$1.java 方法: public void run() 代码: v1.registerReceiver(v2, v0);

建议修复

1.使用 LocalBroadcastManager 来替代registerReceiver注册,保证数据传递仅限于应用内。 2.使用registerReceiver(BroadcastReceiver, IntentFilter, broadcastPermission,android.os.Handle)替代registerReceiver(BroadcastReceiver, IntentFilter),检验权限。 3.在 AndroidManifest.xml 文件中静态注册BroadcastReceiver,同时设置 exported="false"。

WeiLianYang commented 3 months ago

动态注册广播,根据 谷歌官方的解释是有例外情况的,动态注册系统广播 不需要指定 导出标识。另外 在7.0及以上,即使在清单文件中静态注册了,也收不到这个广播。动态注册例外参见:https://developer.android.com/about/versions/14/behavior-changes-14?hl=zh-cn#system-broadcasts

WeiLianYang commented 3 months ago

系统广播在这个android sdk 目录下 broadcast_actions.txt 文件里面能找到 image