最近在做一款理财类app,对安全的要求非常高,必须进行先关研究
查阅信息的相关网站
大神唐巧的博文:http://blog.devtang.com/2014/05/08/ios-security-dev-overview/
非对称加密算法 :https://my.oschina.net/realfighter/blog/388486
代码混淆文章 :http://blog.csdn.net/yiyaaixuexi/article/details/29201699
http://blog.csdn.net/zm53373581/article/details/49120895
为啥这么做我就不说了,可以看大神唐巧的博客。我简单说下怎么做,做哪些安全措施
一、网络安全
(一)加密传输
密码的重要性大家都懂,为了它的安全性,我们怎么做都不过分。比较安全的做法是做非对称加密,并且加盐(Salt:在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符),然后md5加密。
不光是可以对密码进行加密,其他比较重要的传输都可以通过这种方式进行加密。淘宝等应用都是这么做的
通讯协议的防护措施
(二) 之前我们公司的服务器被攻击,短信验证码被黑客用脚本攻击,短信发送额几分钟内就没了。因此几个方法进行防护
1、 相比http方式,还是使用https请求协议(虽然https 也不尽安全,但相对安全 多了)
2、一般的内容可以进行加密,比如用类似protobuf的二进制通讯协议
3、某些接口服务器也要做攻击验证,比如短信获取接口加时间限制,比如同一个ip、一个账号短时间内不允许多次请求
(三)应用内支付的验证(本人没做过内支付app)
iOS 应用内支付 (IAP) 是众多应用赢利的方式,通过先让用户免费试用或试完,然后提供应用内支付来为愿意付费的用户提供更强大的功能,这种模式特别适合不习惯一开始就掏钱的中国用户。但是,由于国内越狱用户的比例比较大,所以我们也需要注意应用内支付环节中的安全问题。
简单来说,越狱后的手机由于没有沙盒作为保护,黑客可以对系统进行任意地修改,所以在支付过程中,苹果返回的已付款成功的凭证可能是伪造的。客户端拿到付款凭证之后,还需要将凭证上传到自己的服务器上,进行二次验证,以保证凭证的真实性。
另外,我们发现越狱用户的手机上,很可能被黑客用中间人攻击技术来劫持支付凭证。这对于黑客有什么好处呢?因为苹果为了保护用户的隐私,支付凭证中并不包含任何用户的帐号信息,所以我们的应用和服务器无法知道这个凭证是谁买的,而只能知道这个凭证是真的还是假的。所以在验证凭证时,哪个帐号发起了验证请求,我们就默认这个凭证是该帐号拥有的。如果黑客将凭证截获,就可以伪装成真实用户来验证凭证或者转手出售获利。
打个比方,这就类似于很多商场的购物卡一样,由于是不记名的,黑客如果将你买的购物卡偷窃然后去刷卡购物,商场是无法简单地区分出来的。
所以,对于应用内支付,开发者除了需要仔细地验证购买凭证外,也需要告知用户在越狱手机上进行支付的风险。
二、本地文件和数据安全
上传到越狱商店后,app不进行安全措施处理,很多重要信息都会暴露给黑客
措施
1、一些类似于js的资源包 进行混淆和加密
2、对于一些像百度地图,友盟分享等appkey 不要放在本地,放在kechain中进行保存,或者通过不对称加密从服务器获取
3、代码被反编译
很多工具都可以通过分析二进制程序文件反编译 我们的代码,防护措施
通过宏 混淆类名 ,核心内容用c或者c++来实现
总结,本文意图是加深在这方面的理解,以后会跟进研究