浅谈APP端开发安全漏洞和防护策略

引言

时代变化,随着信息技术的不断发展,信息安全问题也日渐突出。而在当前,手机 APP 更是处于这个信息安全的中心点,而且可以预见手机 APP 会越来越成为人们生活的重要一部分,同时也是信息泄漏的重要来源点;所以,对APP端的安全漏洞的防护必将越来越受重视。

下面主要对几个漏洞,一一说明,可能不全,但是我当前能想到的所有,而且都是真实存在。

分点说明

1、 APP 中使用不安全的第三方 sdk 或者代码,以及不安全的开发工具

由于这个原因造成安全泄漏的事情,不要太多。

防护策略:

程序员选择开发工具应当在官网下载,而不是其他的转载网站,鬼知道              里面是不是加了料。而其他的第三方 sdk 最好用 github 上已经有很多人用过的 SDK ,而不要随便选一个只要实现功能就行的 SDK 。这里其实个人觉得,如果官方已经有 API 实现某个功能,就用官方的,至于原因,这里就不细说。

APP完成后,用抓包软件,进行监测,看看是否存在不可知的网络传输,如果存在,就要小心了;当然别人加进去,肯定也是有策略的,不是那么容易一下就能发现,所以最好,还是不要用不明来源的东西。


2、用户自己 ROOT 或者 越狱,造成存储信息暴露

很多胆大的用户喜欢Root 或者 越狱 ,为了某些无关紧要的功能,不敢苟同,也不做评论。用一个比较粗糙的比喻,本来是一个高贵的公主,不是谁都能触碰,非得自己变成妓女,随便来个人都能摸俩把,O(∩_∩)O哈!

但作为一个“有痣”的程序员本身来说,还要考虑到这种情况下的信息安全,尽可能不泄漏重要信息。

防护策略:

存储在本地的重要信息,尽量不要用明文存储


3、 APP被反编译

a、android APK 非常容易被反编译成可读文件,稍加修改就能重新打包成新的 APK,进而实现软件破解,内购破解,软件逻辑修改,插入恶意代码,替换广告商 ID 等。

防护策略:

加固或者代码混淆、重要逻辑用NDK实现

b、iOS 这边相对来说要安全很多,但也是可以被反编译的,虽然不能像 android 那样可以被重新打包,但会暴露 APP 内的代码实现,利用这个,就给 APP 开 了一个口子,有时可以利用上进行密码破解等。这里可以举个栗子:

当年支付宝手势密码,就是这样子被人破解的,然后还被刷脸了,哈哈哈。。。当然这个漏洞很早就被修复了。

防护策略:

代码混淆、库封装


4、 网络明文传输

相信大多数程序员都用过抓包软件,在网络传输过程中,网络中的所有数据都是可以被抓包的,如果你用的是明文传输,那全部呈现在抓包软件中。这些明文信息,当你接入不安全的网络环境时,就会暴露用户信息

防护策略:

网络交互时,重要信息,不要用明文传输


5、 动态加载网络代码

像 webView 加载的是 js 代码或者网页,或者热更新代码等,如果服务器已经被劫持,这样就非常不安全,而且可能造成信息泄露、APP被改写等重大问题。

因为所有的网络交互,都涉及到一点---服务器劫持,如何保证劫持后不对 APP 端造成影响,是网络交互设计中的重要前提。

防护策略:

在关键点,进行网络安全防护策略,这里是需要服务器配合的,就不细说


补充说明: HTTPS 并不安全

iOS 之前一直要求APP内部所有 HTTP 都换成 HTTPS ,但到现在又像是没有了下文。Https 并不是完全安全的,只能说比 HTTP 安全,芬兰 DNS 大量劫持事件中,就可以看到 HTTPS 的对黑客来说和 HTTP 没啥两样,形同虚设。


总述:

以上所说肯定是不全的,没有永远攻不破的盾也没有永远的什么都破的了的矛,新的漏洞肯定还会出现,八仙过海各显神通,矛盾,才是人们生活的前进的动力。

相较于本地单方面信息存储的单一,与服务器交互,如何实现交互安全将是更重要的一块,这其中就涉及到各种加密算法和网络交互安全策略,这又将是一大课题。

你可能感兴趣的:(浅谈APP端开发安全漏洞和防护策略)