android四大组件Activity,Service,BroadcastReceiver,ContentProvider都有一个属性exported,它的作用是告诉其他应用可不可以调用我们的组件.
默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。
所以如果不希望组件被其他App调用,需要将exported设置为false;
看了一下我们用的三方sdk如华为支付,广点通广告,都是设置的false.如:
发布的apk文件不要打印敏感信息,如url,token,用户信息等
有些sdk会暗藏猫腻,私自获取用户隐私,如笔者开发的apk就曾因为接入一家不良广告,结果该不良广告窃取用户手机信息,导致apk下线.
为了防止apk被反编译,我们需要对代码进行混淆,加固.
sp,sd卡,数据库
有时候我们会将一些轻量级的数据存储到Sharedpreference,虽然存储在私有目录,但是也可能被拿到,如手机获取了root权限,如果是明文存储的,就会被轻易获取.
内置存储数据读取是需要权限的,而数据如果是存在外部存储中,会被获取到,因此我们可以将数据存储到Android/data/packageName/目录下
数据库在root权限获取后也可以看到明文数据.
webView是Android原生提供的一个实现H5页面的控件。除了具有一般view的属性和设置外,还可以URL请求,页面加载,渲染,页面交互等进行处理。
漏洞产生原因:
解决方案:
参考资料:
1.android默认exported_android:exported 属性详解
2.Android安全防护防护———Android 端常见的安全问题