Android应用安全解决方案

来源:互联网 发布:淘宝拍卖是真的吗 编辑:程序博客网 时间:2024/05/17 08:20


  Android应用会遇到各种各样的安全性问题,如何从宏观上了解各种安全隐患,积极采取适当的防御措施便变得尤为重要。那么,Android应用面临哪些安全问题呢?

  • 病毒
  • 关键信息泄露
  • APP重打包
  • 进程被劫持
  • 数据在传输过程遭劫持
  • Webview漏洞

  病毒不用多说了,都是一些恶意软件。关键信息泄露,可能有些开发者并不十分留意。虽然Java代码可以做混淆,但是Android的几大组件的创建方式是依赖注入的方式,因此不能被混淆。而且目前常用的一些反编译工具比如apktool等能够毫不费劲地还原Java里的明文信息,native里的库信息也可以通过objdump或IDA获取。因此一旦Java或native代码里存在明文敏感信息,基本上就是毫无安全而言的。重打包即通过反编译后重新加入恶意的代码逻辑,重新打包一个APK文件。进程被劫持一般通过进程注入或者调试进程的方式来hook进程,改变程序运行的逻辑和顺序,从而获取程序运行的内存信息。hook需要获取root权限或者跟被hook进程相同的权限。如果手机没被root,被劫持的可能性还是较小。数据在传输过程遭劫持,一般来说是由于数据明文传输或没使用HTTPS。Webview漏洞一般由于JS注入。

  现实中,出现的问题可能比上面提及的还要多。总的来说,应该从以下几个方面来应对Android开发的常见安全问题:

  • 应用权限控制。通过控制应用程序的权限防止恶意应用对系统造成破坏,采取的措施包括合理使用系统内置权限和应用程序自定义权限。
  • 应用程序签名。采用数字签名为应用程序签名。
  • 应用加固。应用加固包括病毒扫描、防注入、防调试、防篡改四个模块,目前行业内已经出现了很多的应用加固解决方案,如360应用加固、腾讯云应用加固、百度应用加固等等。 
  • 静态代码分析。通过静态代码分析工具lint监测安全隐患,对代码进行优化。
  • 防火墙。必要时为Android设备安装防火墙,以防止远程网络攻击。
  • 数据存储加密。采用加密的方式保护应用程序敏感数据,如利用SQLCipher加密SQLite数据库。
  • 应用程序组件开发的安全要点。Activity, Service, Content Provider, Broadcast Receiver等组件在代码层面应采取的安全措施。它们每一个都可以通过隐式的Intent方式打开,所以这些组件只要不是对外公开的必须在AndroidManifest里面注明exported为false,禁止其它程序访问我们的组件。对于要和外部交互的组件,应当添加访问权限的控制,还需要要对传递的数据进行安全的校验。