南通Android开发培训的新课程
科迅教育
发表于:2020-04-15 11:37:03 123次浏览南通Android开发培训的新课程 Android系统主要由Activity、Service、Content Provider和Broadcast Receiver四大基本组件构成。面向组件的设计带来了Android应用程序的灵活性和开放性,但是也带来了负面影响——缺乏安全性。组件的安全直接影响到整个应用程序乃至Android系统的安全。
作为应用程序的表示层,Activity的安全性和权限息息相关。设置Activity启动所要的权,需要在AndroidManifest.xml中为的Activity添加permission属性。比如,要为一个 Activity 设定 START_MY_ACTIVITY 权限,manifest文件中应该有如下定义:
Package="com. sample.sampleapps.sample1">
android:permission="com.sample.sampleapps.samplel.permission.START_MY_ACTIVITY"〉
……
以上定义可以有效地防止应用程序在缺少START_MY_ACTIVITY权限的情况下启动MyActivity。如果一个应用想启动MyActivity,除了必须具备START_MY_ACTIVITY权限以外,还需要创建一个Intent对象来定义必要的特性,然后调用Context.startActiviy()或 Activity.startActivityForResult() 实现启动MyActivity。如果调用成功,MyActivity 才能被启动。如果应用程序没有被授予START_MY_ACTIVITY权限,两个调用都会失败并拋出一个SecurityException异常。另外,启动Activity时,如果应用程序已知所需启动的Activity名称,好通过intent中定义的setComponent()方法调用这个Activity,这样可以防止系统在响应intent时,误启动其他的Activity。此外,密码等敏感信息不能放置于启动Activity的intent中,否则很容易被攻击者利用。
Service的安全性同样可以通过权限检测方式来提供。由于Service执行的操作比较敏感,涉及更新数据库、提供事件通知等操作,因此一定要确保访问Service的组件具备适当的权限。此外,如果访问Service的应用程序中含有密码等敏感信息,那么也需要对Service的安全性进行验证,以防止带有攻击性的Service损害私有信息。保险的做法是,不要轻易把Intent传递给一个公有的、未知名的Service。
与Activity、Service组件暴露的问题相比,Content Provider暴露的安全后果更严重。首先,它更容易暴露。Activity、Service组件只有响应intent或在manifest中设置了android:exported属性为true时才对外暴露。而Provider在早期的Android(Android 4.2)版本中直接就是对外暴露的。其次,它暴露的后果可能更严重,Activity、Service组件暴露后,第三方的应用只是调用这些组件,执行其入口点代码。而Provider暴露后,第三方应用不仅可以直接读取或修改它所管理的数据,甚至可以向其中写入恶意的数据,这样攻击者就可能通过精心构造的数据来控制应用的运行。与Activity、Service组件暴露问题的解决方法相似,Provider暴露的主要解决方法也是设置自定义权限,只是在具体方法上有所不同。
南通Android开发培训的新课程 首先,如果Provider不需要提供给其它应用访问,则只需要在manifest中将android:exported的属性设置为false即可。其次,如果需要将Provider提供给同一团队开发的其它应用访问,可以在manifest中设置signature的自定义权限,并且可以对读取和写入两种操作分别设置不同的权限。最后,如果需要将Provider提供给第三方应用访问,除了直接暴露,还可以细粒度的对每个URI设置访问权限,这个权限可以通过在manifest中为Provider添加grant-uri-permission标签来实现。
南通Android开发培训的新课程原创内容,请点击 南通android开发培训
热门课程
-
南通AdobePhotoshop培训班
询价
-
南通JAVA培训班型
询价
-
南通java培训班
询价
-
南通python培训-南通科迅教育
询价
-
南通PHP培训-科迅教育
询价