文本内容:
android系统中的app组件安全性分析android系统由四个基本组件组成活动、广播接收器、服务(服务)和内容提供商组件给应用程序的开发带来了的灵活性及开放代码,同时,这些开源的组件也带来了一些安全隐患,组件的安全情况将可能影响到整个系统的安全Activity组件是用户唯一可以能够看到的组件,作为软件所有功能的显示载体,其安全问题是最应该受到关注的1活动设施的安全
1.1android系统组件Activity安全首先要讨论的是访问权限的控制,在Android开发文档中可以了解到,Android系统组件在指定的intent过滤器(inent-filter)后,默认是可以被外部程序访问的若是可以被访问,则就意味着可能被其他程序用来利用起来进行攻击
2.2恶意攻击程序从使用角度来看,Activity组件劫持技术属于用户层的安全,程序员是无法控制的其工作原理是,当用户安装了带有Activity劫持功能的恶意程序后,恶意软件会遍历系统中运行的程序,当检测到需要劫持的Activity在前台运行时(如网银的交易界面或支付宝的登录界面),恶意软件将会启动一个带FLAG_Activity_NEW_TASK标志的钓鱼式Activity覆盖正常的Activity,从而欺骗用户输入的用户名和密码信息,当用户提交这些信息时,恶意程序将把这些信息发送到指定的邮箱或者网站,提供给偷窃者,然后再切换到正常的Activity中,其危害性显而易见2安全对策和应用
3.1actity访问权限的使用Android所有组件声明时可以通过制定Android:exported属性值为False,来设置组件不能为外部程序调用这里的外部程序是指签名不同、用户ID不同的程序签名相同且用户ID相同的程序在执行时共享同一个进程,彼此之间是没有组件访问权限的,如果希望Activity能够被特定的程序访问就不能使用Android:exported属性,可以使用Android:permission属性来指定一个权限字符串在manifest文件中应该有如下程序定义my Activityv〃系统会检查调用者是否具有com.droider.permission.My Activity权限在程序代码Android:permission=com.droider.permission,my Activity”这样声明的Activity在被调用时,Android系统会检查调用者是否具有com.droider.permission.My Activity权限,如果不具备就会引发一个SecurityException安全异常从而保证了Activity组件访问权限的安全
2.2把控好程序中的actity被劫持过的检测Activity组件被劫持不需要在Android Manifest,xml中声明任何权限就可以实现,一般的防病毒软件无法检测,手机用户更是防不胜防,目前基本上没有什么好的防范办法,如HijackActivity实例即可对多个进程进行劫持,它在启动时启动一个Hijacker服务,Hijacker服务创建了一个计时器,此计时器每隔2秒就检测一次系统正在运行的进程,判断前台运行的进程在劫持的进程表中是否有匹配项,如果有则进行劫持,其程序代码如下:通过这个程序可以看到,若启动music或Browser应用都将被Hi jackActivity劫持在这里介绍一个简单的检测方法:查看最近运行过的程序列表,通过最后运行的程序来判断Activity是否被劫持过,方法是长按Home键,系统会显示最近运行过的程序列表在最近运行过的程序列表中,若Hijack Activity显示在了最前面,很显然这个程序有劫持Activity的嫌疑但这种检测方法若遇到在声明Activity时,如果设置属性Android:excludefrom Recents的值为True,程序在运行时就不会显示在最近运行过的程序列表中3使用actity组件根据上面的分析,Activity组件有被权限攻击和被劫持的威胁存在,程序开发者在使用组件方面,要谨慎的使用Activity组件,确保具有访问权限的程序才可以访问Activity组件,从而保证系统的安全。