Android程序,Android开发平台

  Android程序,Android开发平台

  【安卓平台中的安全编程】 #01-限制应用的敏感内容提供器的可访问性_wx5dce75f541ce3的技术博客_博客

  本文翻译自https://www。安全编码。证明合格的org/confluence/display/Java/drd 01-j。限制一个应用的敏感内容提供者的可访问性,有增删改。

  内容提供器类提供了与其他应用管理和共享数据的机制。当与其他应用共享供应者的数据时,必须小心的实现访问控制,防止对敏感数据的非法访问。

  限制内容提供器的访问有三种方法:

  公共

  私人的

  受限访问

  [公共]

  在AndroidManifest.xml文件中声明安卓系统:已导出属性,内容提供者就可以公开给其他应用使用,安卓应用程序接口级之前的版本,内容提供者默认是公众的的,除非显式的声明android:exported="false ",例如:

  提供者Android:exported= true Android:name=我的内容提供商 Android:authorities= com。举例。我的内容提供商/如果内容提供器被设置为公共的,那么存储在内容提供器里面的数据就可以被其他应用访问到。因此,设计上必须保证只公开了非保密的信息。

  [私人]

  在AndroidManifest.xml文件中声明安卓系统:已导出属性,可以将内容提供器设置为私人的的。从安卓帮助文档级及之后的版本,内容提供者默认是私人的的,不需要显式声明,例如:

  提供者Android:exported= false Android:name=我的内容提供商 Android:authorities= com。举例。我的内容提供商/如果内容提供器不需要与其他应用共享数据,那么就在显示文件中声明android:exported="false ",需要注意的是,在应用程序接口级及之前的版本,即使你显式声明android:exported="false ",对应的内容提供器还是能够被其他应用访问到。

  [受限访问]

  未完待续

  [不符合安全要求的代码例子]

  MovatwiTouch,一个推特客户端,使用内容提供器来管理推特的用户的密钥,秘密和访问令牌,然而这个内容提供器是公共的,这使得安装在同一台手机上的其他应用可以获取到这些敏感信息。

  下面的AndroidManifest.xml文件中供应者声明没有指定安卓系统:已导出属性,因此,在应用程序接口级之前,这个内容提供器是公开的。

  提供者Android:name= content。帐户提供商 Android:authorities= jp。公司易受攻击。帐户提供商/

  [概念验证]

  下面的代码展示了公共的内容提供器漏洞如何被利用

  //检查是否安装了莫瓦特维.

  尝试{

  应用程序信息info=getPackageManager().getApplicationInfo( jp。co . vulnerable ,0);[cjl5]

  } catch(NameNotFoundException e){

  Log.w(标签,应用未安装。);

  返回;

  }

  //通过内容提供商提取帐户数据

  uri uri=uri。parse( content://jp。公司易受攻击。帐户提供商’);

  Cursor cur=getContentResolver().查询(uri,null,null,null,null);[cjl6]

  StringBuilder sb=new StringBuilder();

  如果(cur!=null) {

  int ri=0;

  while (cur.moveToNext()) {

  ri;

  Log.i(TAG,String.format(row[%d]:,ri));

  某人(somebody的简写)setlength(0);

  for(int I=0;我诅咒。get column count();i) {

  字符串column=cur。获取列名(I);

  字符串值=cur。getstring(I);

  如果(值!=null) {

  value=value.replaceAll([\r\n], );

  }

  Log.i(TAG,String.format(\t%s:\t%s ,列,值));

  }

  }

  }否则{

  Log.i(标签,无法获取应用信息。);

  }

  [解决方案]

  在AndroidManifest.xml文件中将内容提供器显式声明为

  android:exported="false "

  provider Android:name= content。帐户提供商 Android:exported= false Android:authorities= jp。公司易受攻击。帐户提供商/

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: