Android 开发中安全问题

 

1.组件暴露

android四大组件Activity,Service,BroadcastReceiver,ContentProvider都有一个属性exported,它的作用是告诉其他应用可不可以调用我们的组件.

默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。

所以如果不希望组件被其他App调用,需要将exported设置为false;

看了一下我们用的三方sdk如华为支付,广点通广告,都是设置的false.如:


        
            
        

 

2.Log中的敏感信息

发布的apk文件不要打印敏感信息,如url,token,用户信息等

 

3.慎用三方sdk

有些sdk会暗藏猫腻,私自获取用户隐私,如笔者开发的apk就曾因为接入一家不良广告,结果该不良广告窃取用户手机信息,导致apk下线.

 

4.代码混淆,加固

为了防止apk被反编译,我们需要对代码进行混淆,加固.

 

5.数据存储加密

sp,sd卡,数据库

有时候我们会将一些轻量级的数据存储到Sharedpreference,虽然存储在私有目录,但是也可能被拿到,如手机获取了root权限,如果是明文存储的,就会被轻易获取.

内置存储数据读取是需要权限的,而数据如果是存在外部存储中,会被获取到,因此我们可以将数据存储到Android/data/packageName/目录下

数据库在root权限获取后也可以看到明文数据.

 

6.软键盘获取用户私密信息

  • 自定义键盘
  • 防止截屏

 

7.webview

webView是Android原生提供的一个实现H5页面的控件。除了具有一般view的属性和设置外,还可以URL请求,页面加载,渲染,页面交互等进行处理。

漏洞产生原因:

  • js调用Android原生代码,可以通过WebView的addJavaScriptInterface()方法进行对象的映射。当拿到该对象的时候,就可以对该对象中的方法进行调用。攻击可以通过拿到该对象,然后调用对象中的任意方法。
  • 在Android应用中,webview开启了file域的访问,且允许file域对http域进行访问,同时未对file域的路径做限制。攻击者通过URLScheme的方式,可远程打开并加载恶意的html文件,获取到app中的一些信息。这个漏洞触发的条件是1、webview中setAllowFileAccessFromFileURLs或者是setAllowUniversalAccessFromFileURLsAPI配置为true。2、webview可以直接被外部调用,并能够加载外部可控的HTML文件。

解决方案:

  • 针对第一个漏洞,Google也给出解决方案,在Android4.2之前规定,被调用的方法必须要加上@javascriptInterface这个注解。才能够调用。在4.2之前采用拦截prompt()方法来进行漏洞的修复。
  • 针对第二个漏洞,前面说了漏洞触发条件有两个,所以主要办法就是对这两个条件进行修复。
    1. setAllowFileAccessFromFileURLs或setAllowUniversalAccessFromFileURLs两个API为false。(Android4.1版本之前这两个API默认是true,需要显式设置为false)
    2. 如果需要开启file域的访问,则要对file域的访问范围要严格控制。
       

参考资料:

1.android默认exported_android:exported 属性详解

2.Android安全防护防护———Android 端常见的安全问题

你可能感兴趣的:(Android)