【iOS安全】iOS应用安全开发总结
iOS应用由于其直接运行在手机上,相比运行在服务器的后台服务,更有可能被黑客攻击。本文将从网络安全、本地文件和数据安全、源代码安全三个方面,阐述iOS应用在安全性上遇到的挑战。1
一、网络安全
安全地传输用户密码
对密码进行非对称加密,加盐,且在发送时采用`HTTP Post`的方式。
防止通讯协议被轻易破解
选择类似`protobuf`(Google提供的一个开源数据交换格式,其最大的特点是基于二进制,因此比传统的`JSON`格式要短小得多)之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度。
验证应用内支付的凭证:越狱后的手机由于没有沙盒作为保护,黑客可以对系统进行任意地修改,所以在支付过程中,苹果返回的已付款成功的凭证可能是伪造的。客户端拿到付款凭证之后,还需要将凭证上传到自己的服务器上,进行二次验证,以保证凭证的真实性。
另外,我们发现越狱用户的手机上,很可能被黑客用中间人攻击技术来劫持支付凭证。
对于应用内支付,开发者除了需要仔细地验证购买凭证外,也需要告知用户在越狱手机上进行支付的风险。
二、本地文件和数据安全
程序文件的安全:随着混合式(Hybrid)编程方式的兴起,很多应用的部分功能也采用内嵌Web浏览器的方式来实现。通过分析应用内包含的javascript文件,黑客可以比较轻松地知道其调用逻辑。在越狱手机上,还可以修改这些javascript代码,达到攻击的目的。
通过将javascript源码进行混淆和加密,可以防止黑客轻易地阅读和篡改相关的逻辑,也可以防止自己的Web端与Native端的通讯协议泄漏。
本地数据安全:iOS应用的数据在本地通常保存在本地文件或本地数据库中。如果对本地的数据不进行加密处理,很可能被黑客篡改。
对于本地的重要数据,我们应该加密存储或者将其保存到 keychain 中,以保证其不被篡改。
三、源代码安全
通过file
,class-dump
, theos
, otool
等工具,黑客可以分析已经编译之后的二进制程序文件,不过相对于这些工具来说,IDA
的威胁最大,它使一个收费的反汇编工具,对于Objective-C
代码,它可以常常可以反汇编到可以方便阅读的程度。通过阅读源码,黑客可以更加方便地分析出应用的网络通讯协议和数据加密方式。黑客可以用来制作软件的注册机,也可以更加方便地破解网络通讯协议,从而制作出机器人(僵尸)帐号。最极端的情况下,黑客可以将反汇编的代码稍加修改,植入木马,然后重新打包发布在一些越狱渠道上,这将对用户产生巨大的危害。
对于`IDA`这类工具,我们的应对措施就比较少了。除了可以用一些宏来简单混淆类名外,我们也可以将关键的逻辑用纯C实现。例如微信的iOS端的通讯底层,就是用C实现的。这样的方式除了能保证通讯协议安全外,也可以在`iOS`和`Android`等多个平台使用同一套底层通讯代码,达到复用的目的。
- “iOS应用安全开发概述” http://blog.devtang.com/blog/2014/05/08/ios-security-dev-overview/ ↩
【iOS安全】iOS应用安全开发总结相关推荐
- iOS 7 iPhone iPad应用开发技术详解
2019独角兽企业重金招聘Python工程师标准>>> iOS 7 iPhone iPad应用开发技术详解 本书内容全面,从 Objective-C语法知识.iOS功能特 性,到高级 ...
- iOS应用内付费(IAP)开发步骤列表
iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...
- iOS 移动端生成工具开发
代码地址如下: http://www.demodashi.com/demo/11284.html 一.准备工作 编译环境 xcode 用于生成冗余架构代码, 实现生成零耦合架构 二.程序实现 上个月的 ...
- 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营
编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,快速了解Xcode这个开发iOS应用程序的主要工具. ...
- 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营...
编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主 ...
- 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C
2019独角兽企业重金招聘Python工程师标准>>> 编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应 ...
- 【IOS】IOS开发问题解决方法索引(三)
1 判断js对象是否拥有某属性 http://www.cnblogs.com/snandy/archive/2011/03/04/1970162.html 两种方式,但稍有区别 1,in运 ...
- iOS 7: iPhone/iPad应用开发技术详解
iOS 7: iPhone/iPad应用开发技术详解 作者:刘一道 出版社:机械工业出版社 出版年:2013-11 页数:507 定价:79.00元 ISBN:9787111440512 样章下载:h ...
- unity5.X简易的3d跑酷游戏源码。支持安卓+IOS双端 C#语言开发。
unity5.X简易的3d跑酷游戏源码.支持安卓+IOS双端 C#语言开发.拿来学习研究和二次开发都很不错. 完整源码下载 unity5.X简易的3d跑酷游戏源码.支持安卓+IOS双端C#语言开发-U ...
- 视频教程-iOS架构设计与底层开发-iOS
iOS架构设计与底层开发 毕业于解放军特种作战学院,曾就职广州军区司令部.复原后从事IT行业,涉及逆向,安全,密码学等技术领域.2014年在广州某线下教育机构担任iOS讲师,2015年加入潭州教育集团 ...
最新文章
- 第六章 非编码RNA鉴定
- Kotlin项目实践指南(上)
- 零基础Java学习之抽象类
- mysql replace报错_Mysql中replace与replace into的用法讲解
- sklearn常用模块
- Fis3的前端工程化之路[三大特性篇之资源定位]
- python批量访问网页保存结果_Python检测批量URL状态,并将返回正常的URL保存文件...
- js for in 获得遍历数组索引和对象属性
- PHP通知弹窗代码_公告弹窗
- SH760二自由度系统解析法求全解-过渡及稳态过程
- 高校学生就业管理系统
- .NET Standard(1)——.NET Standard是什么
- 封装HDLC协议实现两个路由器互相通信
- SKY光遇功能辅助脚本介绍 新手入门了解SKY光遇
- CCF关于举办CSP-J1 CSP-S1 初赛的报名通知
- 2019 数学建模国赛 C 题思路
- Android-----将 Ijkplayer 集成到Android Studio中(一)
- 系统调用recvfrom和recv区别
- XPC Client error: Connection interrupted问题解决方案
- SpringBootProfile
热门文章
- NMOS和PMOS电流流向以及导通条件
- mac显示所有文件后缀名
- 学会使用box-sizing布局
- java代码实现端口是否ping通
- 知识图谱属性融合_知识图谱融合_本体概念层的融合方法与技术
- Office Word 2010 2013 插入复选框 方框打勾 对号
- html复选框,不打勾默认值是0,打钩默认值是1,方框打钩符号复制(一招教你方框里打勾的符号)...
- 疾病研究:我是一名34岁的进行性肌营养不良症患者
- 文献综述_软件单元测试
- arcgis里面怎么截图_怎么利用ARCGIS裁剪图像