转载请标明出处:
http://blog.csdn.net/sinat_15877283/article/details/50903606;
本文出自: 【温利东的博客】
起因:
昨天下午收到一封邮件,内容如下:
还附上了一份《安全检测报告》 。 ps: 我的内心是抓狂的!抓狂的!抓狂的!(有好几个问题竟然是因为拿不到我的清单文件就说我的程序存在异常)
郁闷归郁闷,还是针对于这份检测报告乖乖的写了一篇 针对于该《安全检测报告》的中问题的分析和解决方案。
借此事件,记录一下关于 清单文件中几个可能会引起安全问题的属性。
干货内容:
- android:debuggable 属性的设置可能会引起 被动态调试的风险。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:debuggable="true">
debuggable 属性有两个值“true|false”;
只有android:debuggable=”true”时我们才可以在手机上调试Android程序。
但是当我们没在AndroidManifest.xml中设置其debug属性时:
使用Eclipse运行这种方式打包时其debug属性为true,使用Eclipse导出这种方式打包时其debug属性为法false.
在使用ant打包时,其值就取决于ant的打包参数是release还是debug.
因此在AndroidMainifest.xml中最好不设置android:debuggable属性置,而是由打包方式来决定其值。
如果设置了 android:debuggable=”true” 那么在正式打包时 把它设置成false吧!!!
- android:allowBackup 属性的设置可能会引起用数据被任意备份的风险
<application
android:allowBackup="false"
android:label="@string/app_name">
......
</application>
Android API Level 8 及其以上 Android 系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中 AndroidManifest.xml 文件中的 allowBackup 属性值,其属性值默认是 True。当 allowBackup 标志为 true 时,用户即可通过 adb backup 和 adb restore 来进行对应用数据的备份和恢复。
一旦应用程序支持备份和恢复功能,攻击者即可通过 adb backup 和 adb restore 进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;因此为了安全起见,开发者务必将 allowBackup 标志值设置为 false 来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。
- android:exported 属性的设置可能会引起用组件导出的风险。
android:exported=["true" | "false"]
android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。
如果设置了导出权限,都可能被系统或者第三方的应用程序直接调出并使用。 组件导出可能导致登录界面被绕过、信息泄露、数据库SQL注入、DOS、恶意调用等风险。
主要作用是:是否支持其它应用调用当前组件。
默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。
请参考:android:exported 属性详解
附加:
androidManifest.xml的一些属性:
属性 | 作用 | 值 | 其它 |
---|---|---|---|
android:allowBackup | 数据是否可备份 | [true/false] 默认为true 其属性值默认是 True。当 allowBackup 标志为 true 时,用户即可通过 adb backup 和 adb restore 来进行对应用数据的备份和恢复。 | https://segmentfault.com/a/1190000002590577 |
android:debuggable | 调试状态 | “使用Eclipse运行这种方式打包时其debug属性为true,使用Eclipse导出这种方式打包时其debug属性为法false.在使用ant打包时,其值就取决于ant的打包参数是release还是debug.” | http://blog.csdn.net/hudashi/article/details/8698142 |
android:exported | 是否支持其它应用调用当前组件 | 默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。 | http://blog.csdn.net/watermusicyes/article/details/46460347 |
android:launchMode | 启动模式 | [“singleTop”/”singleTask”/”singleInstance”] “standard” (默认) | |
android:sharedUserId | Linux用户ID | ||
android:installLocation | 安装位置 | [“auto” / “internalOnly” / “preferExternal”] | http://xin3336019-sina-com.iteye.com/blog/1845766 |
属性太多了,就先写到这里吧…… 希望我的分享对你有帮助
转载请标明出处:
http://blog.csdn.net/sinat_15877283/article/details/50903606;