分享Android移动应用开发经验,几维安全使您的APP免受破解威胁
来自学啊(xuer.com)的消息:Android作为移动智能终端的主力军,拥有大量的应用开发人员,目前国内大约有230万移动应用开发人员,其中就有46.4%的人员开发安卓App。大多数开发人员安全意识薄弱,重功能轻安全。
在我们看来,要想提高软件系统的安全性,需从源头抓起,必须将安全特性融入到软件开发的整个生命周期之中,首先要加强软件用户和开发人员的基本安全意识,再提升开发人员的安全技能。本次就从安卓APP几个最常见问题点来谈谈安全开发最佳实践。
一、认证和授权
认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但是有些APP出于性能提升或用户体验等原因,将其做在客户端完成,由此导致客户端绕过等问题。
最佳实践:
在客户端做认证和授权是很难保证安全的,所以应该把认证和授权做在服务器端;
尽可能避免在设备上存储用户名和密码,可以使用登录认证后获得的token进行鉴权(同时注意控制token的有效期)。
二、加密和解密
开发人员在移动应用中通常会对敏感数据进行加密处理,但是使用不当有可能让其保护强度削弱,甚至大打折扣,因此,正确的选择加解密算法显得非常重要。
最佳实践:
在不需要还原用户明文密码的场景使用哈希算法,在需要还原用户明文密码的场景下使用对称加密算法,并且始终优先选择使用哈希算法;
使用目前主流的安全加密算法,比如哈希算法可以使用SHA256,对称加密算法可以使用AES128/256,不使用过时的不安全算法,比如RC4、RC5、MD5和SHA1;
密文和密钥不要放在同一文件或同一目录内,应分开存放,在一些安全度要求高的情况下,密钥最好碎片化存储。
三、数据验证
移动应用往往通过数据的发送、接收和处理来完成一系列功能,通常情况下,处理的数据绝大部分都来源于外部(比如网络、内部或外部存储和用户输入等),对这些数据处理不当会导致各种各样的漏洞和风险,比如代码执行和信息泄漏等等。
最佳实践:
对所有外部数据进行数据验证,数据验证建议采用白名单的方式,即只允许指定的字符通过,其它字符一律过滤,同时验证数据的长度和类型等;
使用参数化查询语句防止SQL注入。
使用WebViews时,将JavaScript和插件支持特性关掉,如果一定要打开该特性,需要对输出的内容进行html转义。
设置禁止WebViews对文件系统进行存取,以防止文件包含漏洞。
在activity内使用Intent Filter对action和data进行过滤。
四、应用加固
通常一个应用发布后可能会面临以下风险:
(1)应用被别人解包植入广告或恶意代码再重打包发布。
(2)应用的核心关键代码逻辑被逆向。因此,有必要在技术层面采取一定的缓解措施。
最佳实践:
可以使用proguard对Java源码进行混淆,对抗反编译。对Native代码进行加壳,对抗反汇编;
应用程序加入动态反调试方法:例如,预先在AndroidManifest.xml文件插入android:debuggable=”false”,在程序中判断该标志位是否被篡改,此外,android SDK也提供了相关方法来检测调试器是否已连接,可在程序中随机插入检测。
应用程序加入防二次打包的方法:应用程序被篡改并重打包时必定要重新签名,签名值和原开发者的必定不一样(不考虑证书丢失的情况),另外,重新编译程序classes.dex文件肯定会变,因此可在程序运行时对比签名或CRC值的方法对抗重打包。
五、安全配置
安全开发可以大大降低移动应用的安全风险,同样,安全的配置可以让风险降到最低。
最佳实践:
确保使用的第三方组件是从官方下载的,并且是最新版本的。
为应用程序申请最小的权限,如果用不上就不要申请。
应用和补丁在发布前建议进行病毒和恶意代码检测。
为敏感数据输入界面提供防截屏措施,对抗木马。
六、其他事项
关键性业务逻辑代码应放在native代码实现,除此以外,尽量使用android SDK做开发,减少对native代码的依赖(native代码一般采用C/C++编写,容易出现缓冲区溢出等漏洞)。
尽量少用动态加载的方式执行代码(比如使用DexClassLoader),如果需要从外部存储动态加载可执行文件或类文件,应经过严格的文件完整性验证。例如,对待动态加载的可执行文件或类文件进行哈希计算,并与存储在服务器端的正确的哈希值进行对比,如果一致则表示文件未被篡改过,否则拒绝执行加载。
转自:https://www.xuer.com/index.php?m=bottom.foot_linkCon&catid=15&id=889
面对市面上层出不穷的各类移动应用安全威胁,几维安全特别提示开发者在开发和维护APP的时候,首先应当将APP的安全性设定为第一要务。同时,根据移动应用的不同行业特点,定制专属的移动安全解决方案,有针对性地保护您的APP,降低风险成本,免除安全隐患。
目前,几维安全基于移动应用面临的众多安全问题特别推出:在线加密服务(登录几维防御平台https://cloud.kiwisec.com即刻体验)、离线本地加固服务、KiwiVM虚拟机定制等一系列加密加固服务。能有效防止APP被反编译或被植入恶意广告后篡改支付链接等种种行为,从根源上帮助开发者解决产品安全问题,从而保护APP用户的使用安全。
了解更多,请接洽:
商务合作:QQ:120646233(张女士)
销售咨询:QQ:532224639(陈先生)
销售咨询:QQ:1174695402(李先生)
邮箱地址:service@kiwisec.com