目前,大部分的移动应用都是需要联网,与服务器进行通信,获取最新的数据。一提到网络,肯定就有大量和安全性相关的问题出来。所以,对于我们开发者而言,如何打造一个安全的App,是必须面对的问题。前段时间我专门对iOS移动应用安全性方面进行了研究,下面我们分析iOS应用中可能会存在的安全风险以及相对应的处理方式。

1、网络安全

在网络请求中,我们经常使用两种请求方式:GET和POST。如果是用GET发送请求,当我们采用明文的方式给服务器发送数据,数据里面还包含一些敏感数据如账号密码,这些数据都是包装在URL中,并且服务器的访问日志会记录,所以黑客一旦攻破服务器,可以轻易获得所有用户的账号密码。POST相对于GET来说,要相对安全一些,我们发给服务器的数据是包装在请求体中,不会直接暴露在url中。但是其实POST也是不安全的,在MAC电脑上可以利用Charles软件(如果在Windows下,可以使用Fiddler软件)来将自己的电脑设置成代理服务器,从而截取应用的网络请求,所以GET和POST都是不安全的。这时,为了防止账号密码泄漏,我们要对其进行加密。加密的方式有很多种,最简单的就是base64加密,但是base64 过于简单,很容易破解,不推荐使用。第二种就是md5加密,其核心思想是从给定的数据中提取特征码,不容产生重复,安全性比较高,在计算机安全领域使用的比较广泛,但是现在也有专门的网站对md5进行破解,为了使MD5加密更安全,我们会进行加盐,HMac,加时间戳等,提高安全级别和破解难度。第三种就是对称加密和非对称加密。非对称加密:事先生成一对用于加密的公私钥,客户端在登录时,使用公钥将用户的密码加密后,将密文传输到服务器。服务器使用私钥将密码解密。这样的做法,保证黑客即使截获了加密后的密文,由于没有私钥,也无法还原出原始的密码。

2、协议问题

iOS9.0 之前,做网络请求时时用http协议,但是http协议是不安全协议,很容易被攻破,在成功破解了通信协议后,黑客可以模拟客户端登录,进而伪造一些用户行为,可能对用户数据造成危害。像我们平常听到的游戏代练,刷分,其实是游戏的通信协议被破解,黑客制作出了代练的机器人程序。在iOS9.0后,苹果推荐采用https协议进行网络数据传输。当然,如果自己手上有更好更安全的协议,可以用自己的。

3、本地文件安全

iOS应用的数据在本地通常保存在本地文件或本地数据库中。如果对本地的数据不进行加密处理,很可能被黑客篡改,所以我们要对重要的数据进行加密,根据重要程度选择安全性可靠的方式。

4、源代码安全

应用程序上架需要编译成二进制文件,这些二进制文件也是存在安全隐患。黑客可以通知反编译工具,对这个文件进行反编译。对于Objective-C代码,它常常可以反汇编到可以方便阅读的程度,这对于程序的安全性,也是一个很大的危害。因为通过阅读源码,黑客可以更加方便地分析出应用的通信协议和数据加密方式。一般我们应对的方式给我们的代码加一些东西,混淆源代码的内容,比如定义一些乱其八糟的宏,比如打乱代码的顺序等。这样,就算文件被反编译成功,也需要花大量的时间去破解。

支持原创:http://blog.csdn.net/qq_34716474/article/details/51265092

ios客户端安全性问题分析及处理方式相关推荐

  1. 苹果应用内支付(iOS IAP)的流程与常用攻击方式

    苹果应用内支付(iOS IAP)的流程与常用攻击方式 Jan 19, 2017 常见支付流程 iap(in app purchase)指苹果应用内支付, 目前主要有两种方式. 1. 客户端直接veri ...

  2. 开源中国iOS客户端学习——(八)网络通信AFNetworking类库

    AFNetworking是一个轻量级的iOS网络通信类库,继ASI类库不在更新之后开发者们有一套不错选择: AFNetworking类库×××和使用教程: https://github.com/AFN ...

  3. 58 同城 iOS 客户端组件体积分析与统计实践

    [导读]目前 58 旗下存在租房.安居客.招聘.二手车.黄页等多个业务线,其中每个业务线在 58 APP 中存在一个或多个业务 pod.在研发层面上,58 同城其实早已实现了并行研发,不过,在并行研发 ...

  4. 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践

    一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...

  5. 开源中国iOS客户端学习

    开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html ...

  6. 58 同城 iOS 客户端组件化演变历程

    导语: 架构的演进是为业务不断发展服务的,架构不能脱离业务,这是最基本的出发点.58 同城 iOS 客户端随着业务量和用户量的持续增长,架构也是不断受到挑战,采用什么样的架构去适应这些变化,对技术人员 ...

  7. 笔记|滴滴iOS客户端的架构,组件化,技术选型

    笔记来源infoq:滴滴iOS客户端的架构演变之路 1,状态机,把订单中的阶段,例如:出租车的等待抢单.出租车的等待接驾.专车的等待抢单.专车的等待接驾,都当成一种独立的状态,每 个状态机只需要知道可 ...

  8. iOS客户端React-Native增量更新实践

    市场上现存方案:微软的 CodePush 以及React-Native中文网的Pushy,大家可根据公司实际情况酌情选择. 处于安全性的考虑,公司禁止向第三方平台上传源码相关文件,所以要自己动手实现. ...

  9. 开源中国iOS客户端学习——(十二)用户登陆

    ---------------------------------------------------------------------------------------------------- ...

最新文章

  1. 没有会员wps合并多个sheet_WPS「合并文档」功能,如何“唰”一下把多个文档合并到一起?...
  2. mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...
  3. 集合的交集和函数的例题
  4. c 数据压缩算法_CCSDS图像压缩算法之我见(一)
  5. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
  6. 好家伙,这才是最强的目标检测落地模型!
  7. saslauthd mysql_Postfix,saslauthd,mysql,smtp身份验证问题
  8. vb excel 连续多个值赋值_VB实现向数组中插入元素
  9. [Translation]Silverlight 4-MVVM with Commanding and WCF RIA Services
  10. 计算机c语言在线课堂,计算机(C语言)
  11. 【游戏开发解答】Unity发布微信小游戏,中文字无法显示的问题(自制字体库 | Font | Custom set | 动态字体 | 静态字体)
  12. java实现微软文本转语音(TTS)经验总结
  13. 男子打着点滴参观博物馆 被称“挂水哥”感动南博(图)
  14. html价格划掉的样式,用css布局价格划线_价钱中划线_价格中间贯穿删除线效果样式布局...
  15. php 分词搜索 splitword
  16. Mac使用技巧/M1 Mac安装 PS 2021 闪退、卡启动界面解决方法
  17. python-猜数字游戏
  18. ITRON入门学习之实时操作系统的意义与价值
  19. 基础实验 7-2.1 魔法优惠券(25 分)
  20. 智慧公交站台:EasyCVR智能视频平台助力城市智慧交通建设

热门文章

  1. 影响不良贷款拨备覆盖率的因素分析
  2. 目前企业的云计算转型,主要可以划分为哪四个阶段?
  3. python 3.8安装pymssql
  4. 没想到,错误的单例写法,让 RabbitMQ 大量超时导致程序挂死!
  5. IDEA SpringBoot 同一个模块启动多个服务(实例)
  6. 三层架构Bll中报错找不到可接受类型为“Lesson.DAL.StudentDal”的第一个参数的扩展方法
  7. GPU矩阵点积代码实现及分析
  8. js模糊匹配(like)
  9. 前端基础第五天项目 社交媒体黑马头条项目-文章模块和评论
  10. mysql 基于idb文件恢复数据