几维资讯> 几维动态

分享Android移动应用开发经验,几维安全使您的APP免受破解威胁

几维安全 2016-07-22 12:13:20  6483
分享到:

 

 

 来自学啊(xuer.com)的消息:Android作为移动智能终端的主力军,拥有大量的应用开发人员,目前国内大约有230万移动应用开发人员,其中就有46.4%的人员开发安卓App。大多数开发人员安全意识薄弱,重功能轻安全。

在我们看来,要想提高软件系统的安全性,需从源头抓起,必须将安全特性融入到软件开发的整个生命周期之中,首先要加强软件用户和开发人员的基本安全意识,再提升开发人员的安全技能。本次就从安卓APP几个最常见问题点来谈谈安全开发最佳实践。

Y_app.png

一、认证和授权

认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但是有些APP出于性能提升或用户体验等原因,将其做在客户端完成,由此导致客户端绕过等问题。

最佳实践:

在客户端做认证和授权是很难保证安全的,所以应该把认证和授权做在服务器端;

尽可能避免在设备上存储用户名和密码,可以使用登录认证后获得的token进行鉴权(同时注意控制token的有效期)。

二、加密和解密

开发人员在移动应用中通常会对敏感数据进行加密处理,但是使用不当有可能让其保护强度削弱,甚至大打折扣,因此,正确的选择加解密算法显得非常重要。

最佳实践:

在不需要还原用户明文密码的场景使用哈希算法,在需要还原用户明文密码的场景下使用对称加密算法,并且始终优先选择使用哈希算法;

使用目前主流的安全加密算法,比如哈希算法可以使用SHA256,对称加密算法可以使用AES128/256,不使用过时的不安全算法,比如RC4RC5MD5SHA1

密文和密钥不要放在同一文件或同一目录内,应分开存放,在一些安全度要求高的情况下,密钥最好碎片化存储。

三、数据验证

移动应用往往通过数据的发送、接收和处理来完成一系列功能,通常情况下,处理的数据绝大部分都来源于外部(比如网络、内部或外部存储和用户输入等),对这些数据处理不当会导致各种各样的漏洞和风险,比如代码执行和信息泄漏等等。

最佳实践:

对所有外部数据进行数据验证,数据验证建议采用白名单的方式,即只允许指定的字符通过,其它字符一律过滤,同时验证数据的长度和类型等;

使用参数化查询语句防止SQL注入。

使用WebViews时,将JavaScript和插件支持特性关掉,如果一定要打开该特性,需要对输出的内容进行html转义。

设置禁止WebViews对文件系统进行存取,以防止文件包含漏洞。

activity内使用Intent Filteractiondata进行过滤。

四、应用加固

通常一个应用发布后可能会面临以下风险:

1)应用被别人解包植入广告或恶意代码再重打包发布。

2)应用的核心关键代码逻辑被逆向。因此,有必要在技术层面采取一定的缓解措施。

最佳实践:

可以使用proguardJava源码进行混淆,对抗反编译。对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

1.jpg

面对市面上层出不穷的各类移动应用安全威胁,几维安全特别提示开发者在开发和维护APP的时候,首先应当将APP的安全性设定为第一要务。同时,根据移动应用的不同行业特点,定制专属的移动安全解决方案,有针对性地保护您的APP,降低风险成本,免除安全隐患。

目前,几维安全基于移动应用面临的众多安全问题特别推出:在线加密服务(登录几维防御平台https://cloud.kiwisec.com即刻体验)、离线本地加固服务、KiwiVM虚拟机定制等一系列加密加固服务。能有效防止APP被反编译或被植入恶意广告后篡改支付链接等种种行为,从根源上帮助开发者解决产品安全问题,从而保护APP用户的使用安全。

 

了解更多,请接洽:

商务合作:QQ:120646233(张女士)

销售咨询:QQ:532224639(陈先生)

销售咨询:QQ:1174695402(李先生)

官方网站:https://www.kiwisec.com

邮箱地址:service@kiwisec.com

 

 logo.jpg

 

 

 

分享到:



《安卓应用加密》 《Unity3D手游加密》 《源代码加密》 《移动端的KiwiVM虚拟机》