iOS应用由于其直接运行在手机上,相比运行在服务器的后台服务,更有可能被黑客攻击。本文将从网络安全、本地文件和数据安全、源代码安全三个方面,阐述iOS应用在安全性上遇到的挑战。1

一、网络安全

  1. 安全地传输用户密码

    对密码进行非对称加密,加盐,且在发送时采用`HTTP Post`的方式。
    
  2. 防止通讯协议被轻易破解

    选择类似`protobuf`(Google提供的一个开源数据交换格式,其最大的特点是基于二进制,因此比传统的`JSON`格式要短小得多)之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度。
    
  3. 验证应用内支付的凭证:越狱后的手机由于没有沙盒作为保护,黑客可以对系统进行任意地修改,所以在支付过程中,苹果返回的已付款成功的凭证可能是伪造的。客户端拿到付款凭证之后,还需要将凭证上传到自己的服务器上,进行二次验证,以保证凭证的真实性。

    另外,我们发现越狱用户的手机上,很可能被黑客用中间人攻击技术来劫持支付凭证。

    对于应用内支付,开发者除了需要仔细地验证购买凭证外,也需要告知用户在越狱手机上进行支付的风险。
    

二、本地文件和数据安全

  1. 程序文件的安全:随着混合式(Hybrid)编程方式的兴起,很多应用的部分功能也采用内嵌Web浏览器的方式来实现。通过分析应用内包含的javascript文件,黑客可以比较轻松地知道其调用逻辑。在越狱手机上,还可以修改这些javascript代码,达到攻击的目的。

    通过将javascript源码进行混淆和加密,可以防止黑客轻易地阅读和篡改相关的逻辑,也可以防止自己的Web端与Native端的通讯协议泄漏。
    
  2. 本地数据安全:iOS应用的数据在本地通常保存在本地文件或本地数据库中。如果对本地的数据不进行加密处理,很可能被黑客篡改。

    对于本地的重要数据,我们应该加密存储或者将其保存到 keychain 中,以保证其不被篡改。
    

三、源代码安全

通过file,class-dump, theos, otool等工具,黑客可以分析已经编译之后的二进制程序文件,不过相对于这些工具来说,IDA的威胁最大,它使一个收费的反汇编工具,对于Objective-C代码,它可以常常可以反汇编到可以方便阅读的程度。通过阅读源码,黑客可以更加方便地分析出应用的网络通讯协议和数据加密方式。黑客可以用来制作软件的注册机,也可以更加方便地破解网络通讯协议,从而制作出机器人(僵尸)帐号。最极端的情况下,黑客可以将反汇编的代码稍加修改,植入木马,然后重新打包发布在一些越狱渠道上,这将对用户产生巨大的危害。

对于`IDA`这类工具,我们的应对措施就比较少了。除了可以用一些宏来简单混淆类名外,我们也可以将关键的逻辑用纯C实现。例如微信的iOS端的通讯底层,就是用C实现的。这样的方式除了能保证通讯协议安全外,也可以在`iOS`和`Android`等多个平台使用同一套底层通讯代码,达到复用的目的。

  1. “iOS应用安全开发概述” http://blog.devtang.com/blog/2014/05/08/ios-security-dev-overview/ ↩

【iOS安全】iOS应用安全开发总结相关推荐

  1. iOS 7 iPhone iPad应用开发技术详解

    2019独角兽企业重金招聘Python工程师标准>>> iOS 7 iPhone iPad应用开发技术详解 本书内容全面,从 Objective-C语法知识.iOS功能特 性,到高级 ...

  2. iOS应用内付费(IAP)开发步骤列表

    iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...

  3. iOS 移动端生成工具开发

    代码地址如下: http://www.demodashi.com/demo/11284.html 一.准备工作 编译环境 xcode 用于生成冗余架构代码, 实现生成零耦合架构 二.程序实现 上个月的 ...

  4. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营

    编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,快速了解Xcode这个开发iOS应用程序的主要工具.   ...

  5. 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营...

         编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主 ...

  6. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C

    2019独角兽企业重金招聘Python工程师标准>>> 编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应 ...

  7. 【IOS】IOS开发问题解决方法索引(三)

    1       判断js对象是否拥有某属性 http://www.cnblogs.com/snandy/archive/2011/03/04/1970162.html 两种方式,但稍有区别 1,in运 ...

  8. iOS 7: iPhone/iPad应用开发技术详解

    iOS 7: iPhone/iPad应用开发技术详解 作者:刘一道 出版社:机械工业出版社 出版年:2013-11 页数:507 定价:79.00元 ISBN:9787111440512 样章下载:h ...

  9. unity5.X简易的3d跑酷游戏源码。支持安卓+IOS双端 C#语言开发。

    unity5.X简易的3d跑酷游戏源码.支持安卓+IOS双端 C#语言开发.拿来学习研究和二次开发都很不错. 完整源码下载 unity5.X简易的3d跑酷游戏源码.支持安卓+IOS双端C#语言开发-U ...

  10. 视频教程-iOS架构设计与底层开发-iOS

    iOS架构设计与底层开发 毕业于解放军特种作战学院,曾就职广州军区司令部.复原后从事IT行业,涉及逆向,安全,密码学等技术领域.2014年在广州某线下教育机构担任iOS讲师,2015年加入潭州教育集团 ...

最新文章

  1. 第六章 非编码RNA鉴定
  2. Kotlin项目实践指南(上)
  3. 零基础Java学习之抽象类
  4. mysql replace报错_Mysql中replace与replace into的用法讲解
  5. sklearn常用模块
  6. Fis3的前端工程化之路[三大特性篇之资源定位]
  7. python批量访问网页保存结果_Python检测批量URL状态,并将返回正常的URL保存文件...
  8. js for in 获得遍历数组索引和对象属性
  9. PHP通知弹窗代码_公告弹窗
  10. SH760二自由度系统解析法求全解-过渡及稳态过程
  11. 高校学生就业管理系统
  12. .NET Standard(1)——.NET Standard是什么
  13. 封装HDLC协议实现两个路由器互相通信
  14. SKY光遇功能辅助脚本介绍 新手入门了解SKY光遇
  15. CCF关于举办CSP-J1 CSP-S1 初赛的报名通知
  16. 2019 数学建模国赛 C 题思路
  17. Android-----将 Ijkplayer 集成到Android Studio中(一)
  18. 系统调用recvfrom和recv区别
  19. XPC Client error: Connection interrupted问题解决方案
  20. SpringBootProfile

热门文章

  1. NMOS和PMOS电流流向以及导通条件
  2. mac显示所有文件后缀名
  3. 学会使用box-sizing布局
  4. java代码实现端口是否ping通
  5. 知识图谱属性融合_知识图谱融合_本体概念层的融合方法与技术
  6. Office Word 2010 2013 插入复选框 方框打勾 对号
  7. html复选框,不打勾默认值是0,打钩默认值是1,方框打钩符号复制(一招教你方框里打勾的符号)...
  8. 疾病研究:我是一名34岁的进行性肌营养不良症患者
  9. 文献综述_软件单元测试
  10. arcgis里面怎么截图_怎么利用ARCGIS裁剪图像