“看过本书的朋友,能够将自己的 iOS 应用在安全方面的得分,从不及格提升到 80 分。” ——————唐巧
为你的ios程序穿上安全的外衣
从有计算机程序开始,安全问题就一直存在,而互联网的流行使得安全问题被进一步放大,所以现在各大互联网公司对于安全都非常重视。我曾经所在的网易公司就有专门的安全部门。安全部门的同事会扮演黑客的角色,对网易旗下的产品进行各种试探性的攻击,从而发现公司产品在安全方面的问题。
在移动互联网快速发展的今天,iOS 应用由于直接运行在用户的手机上,相比运行在服务器的后台服务,更有可能被黑客攻击。恶意的一些攻击手段包括劫持网络通讯、窃取本地数据以及篡改程序行为。很多人把安全问题完全交给 iOS 系统自带的沙盒(Sandbox),但是仅仅靠沙盒也是不够的。因为如果不做其它的防护,一旦沙盒被攻破,那么程序的安全性就完全无法保障了。
而在中国,这样的问题尤为突出,因为中国对软件的版权保护不力,使得盗版软件流行。而 iOS 应用如果需要安装盗版软件,越狱系统是最为方便的方式(另一种方式是用企业签名)。越狱催生出一些 iOS 盗版应用市场,从而出现一些盗版的游戏、软件以及木马病毒的传播。
做为 iOS 应用的开发者,我们当然不希望自己的游戏被修改成无限道具和金币,自己的应用被修改成无需付费就使用应用内付费功能,更不希望黑客在自己的应用中植入木马,窃取受害用户的帐号密码等敏感信息。而这一切,都是沙盒无法保护的。我们需要做更多的安全方面的工作,才能抬高应用被破解和修改的成本,使得自己的应用更加安全。
但是,「猫和老鼠」的游戏每天都在上演,在我们不断增加防御手段的同时,黑客的攻击手段也在不断升级。
所以,安全问题会是一个永不过时的话题,没有绝对意义上的安全。我们能做的,就是不断学习和研究,使得当前自己应用的安全水平已经能够防止大多数别有用心的黑客攻击。
国内ios安全的现状
就我所知,几乎 99% 的 iOS 应用都没有做破解方面的防护。但是,如果你简单做一些代码混淆、反动态库注入、反调试方面的工作,就可以将应用被破解的难度大大提高。另外,如果你使用 IDA 进行 iOS 代码反汇编的话,你几乎可以看到你想看的所有应用的源码。我还记得 2015 年的春节前夕,微信在其应用中做了一个抢红包的功能,但是这个功能还在测试中,所以被设置成永不开启。但是,我认识的一个做安全的朋友却用本书中介绍的Cycript工具,将这个功能打开了,结果造成了相关功能被提前泄漏到了网上。而一些破坏性更强的逆向攻击行为我都不敢将其公开,因为几乎所有应用都在这些攻击方式下不能幸免。
那我个人为什么对安全这么感兴趣呢?其实说来话长,我高中时就开始学习编程,当时的梦想是当一名黑客。于是安全方面的学习就一直伴随着我的职业生涯。而我在学习 iOS 移动开发的时候,带着习惯,我也就开始学习 iOS 开发安全方面的知识。
还记得我学习 iOS 开发安全的时候,曾经看过《iOS应用安全攻防实战》的英文版。本书的内容同时包括了攻击和防御相关的内容,非常适合 iOS 开发工程师学习,并且将其中的实践带到自己的应用中,以保护自己的应用不被攻击。我并不期望《iOS应用安全攻防实战》能够解决所有的安全问题,但是我相信,看过本书的朋友,能够将自己的 iOS 应用在安全方面的得分,从不及格提升到 80 分。
唐巧
《iOS开发进阶》作者
2015年05月于北京
————本文节选《ios应用安全攻防实战》