亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于應用數據傳遞LocalBroadcast(局部廣播)

標簽:
Android

有一段时间没有专门去做Android开发了,但是这几天针对app进行漏洞扫描,出了一份扫描报告,有145个漏洞需要去解决,于是又开启了Android填坑...

这些漏洞,涉及了很多模块,网络通信(https,中间人劫持,弱证书校验)webview(绕过证书校验,File域同源策略绕过,AddJavaScriptInterface任意命令执行,隐藏js接口)加密(弱加密,SecureRadnom随机数漏洞)存储(zip解压目录遍历,sp存储,Internal Storage存储)组件(ContentProvider Activity等组件导出暴露,广播信息泄露,allowBackUp文件备份,Intent Scheme URL攻击漏洞)......于是开始逐一解决


webp

Android广播

现在记录下广播信息泄露及其解决方案:

漏洞

在使用sendBroadcast发送广播,intent传递应用参数时,未对接受广播的应用进行限制,导致任何应用均可获取发送的信息,从而造成信息泄漏。

解决方案

1、部分需要与外部进程交互的,进行权限控制,使用sendBroadcast(Intent, receiverPermission)替代sendBroadcast(Intent),并修改广播接收端。
2、在进程内,使用LocalBroadcast替换Broadcast,事实上,我们app中有不少仅仅在应用内进行通信的Broadcast,这些基本上可以使用LocalBroadcast替换。

LocalBroadcast

使用LocalBroadcast的方法与Broadcast大同小异

1). 发送

与Broadcast一致,都是通过Broadcast方法,intent也一致

LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
2). 接收

接收时,包含register与unRegister,registerReceiver的receiver和filter与Broadcast一致

LocalBroadcastManager localBroad = LocalBroadcastManager.getInstance(mContext);
localBroad .registerReceiver(receiver, filter);
if(receiver != null) {
    LocalBroadcastManager localBroad = LocalBroadcastManager.getInstance(mContext);
    localBroad .unregisterReceiver(receiver);
}
3). 机制

与Broadcast的Bindler机制不同,LocalBroadcast其实是handler机制,这也就解释了为什么其仅能在进程内使用,也就是说,LocalBroadcast虽然命名像是Broadcast,但其并不是Broadcast。



作者:ThinkinLiu
链接:https://www.jianshu.com/p/17f9d8f5b4a9


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消