ios开发中的技术难点(ios开发注意事项)

技术iOS开发安全的方法是什么这篇文章主要讲解了“iOS开发安全的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“iOS开发安全的方法是什么”吧! 一、网络方面用

本文主要讲解“iOS开发安全的方法是什么”。本文的解释简单明了,易学易懂。请跟随边肖的思路,一起学习学习《iOS开发安全的方法是什么》!

一、网络方面

可以用抓包工具抓取手机通讯界面的数据。以Charles为例,用Charles可以得到http的所有明文数据。配置其证书后,可以模拟中间人攻击,在https加密前得到明文数据。

让我们简单谈谈什么是中间人攻击:

客户端:“我是客户端,把你的公钥给我”——服务器(被中间人拦截)。

所以现在是:

客户中间人,

中间人然后将消息转发给服务器,即:

中间人-服务器。

服务器将带有公钥的信息发送给客户端,但在中间被拦截。所以它是:

服务器-[服务器的公钥]-中间人。

中间人用自己的公钥替换服务器的公钥并发送给客户端,自称是服务器的公钥:

中间的人-[中间的人的公钥]-客户

客户端用得到的公钥加密,实际上是用中间人的公钥加密的,所以中间人可以用自己的私钥解密得到原始数据,然后用服务器的公钥加密原始数据(或修改原始数据内容)并发送给服务器。

通过这种方式,中间人可以获得双方之间的通信数据,并创建虚假数据。

让我们从如何预防开始:

1、SSL锁定

SSL Pinning的原理是将服务器的公钥存储在客户端,客户端会检查服务器返回的证书和客户端保存的证书是否一致,从而避免中间人替换证书的攻击。

SSL pinking的实现比较简单,只需将CA证书放入项目中,通过安全框架在NSURLSession上实现SSL pinking即可。如果使用AFNetworking,代码会更简单:

iOS开发安全的方法是什么

这样,如果查尔斯抓住了包,他会报告一个错误。

iOS开发安全的方法是什么

证书验证只能验证公钥(AFSSLPinningModePublicKey)或完全验证证书(AFSSLPinningModeCertificate)。

但是SSL Pinning有一个严重的问题,那就是如果证书有问题,只能通过发布新版本来解决。如果新版本一直不被批准,app的网络通讯就会全部挂掉。

例如,赛门铁克证书不受谷歌和iOS12的信任。如果app有内置证书,必须重新颁发。

2.加密接口内容。

很多app接口只对请求的参数进行加密验证,接口返回的数据是明文。如果不使用SSL Pinning来防止中间人攻击,接口返回的数据也可以加密,这样数据包捕获工具仍然无法破解数据包。

比如微信,微信里的界面使用http协议,但是内容都是加密的。

iOS开发安全的方法是什么

现在常用对称加密,加密效率比较快。如果app中有些数据特别重要,还是要使用非对称加密。非对称加密比较安全,但是效率会比较慢。

二、日志

1.Swift日志

Swift中打印日志的语法可以是print,也可以是NSLog。但是尽量不要用NSLog,因为Swift里面用的是NSLog,可以在系统日志里面找到。您可以通过pp助手、iTools或Xcode的设备和模拟器查看系统日志。

打印日志不会出现在系统日志中。

2.OC日志

不要在发布环境中输出NSLog日志。一般大家都会用宏定义来解决问题,如下:

iOS开发安全的方法是什么

三、信息的存储

1.钥匙

大多数程序员喜欢将键直接放入宏或常量中。

例如#定义AES _ key @“AAA 123”

这很容易被反编译。安全性差。以下方法可以用来加强安全性,增加破解难度。

1.1.加密密钥(A),然后将其定义为宏(B)。使用时,解密得到密钥(A)。其中用于加密密钥a的密钥是C.

因为

在宏定义的时候我们如果定义成字符串,会直接存在data段,这样破解者很容易获取到。比较安全的做法是把C和B定义成uint8_t[]数组,这样每个字符就会放到text段的每个单独指令中。指令执行后生成字符串。这样就会很安全。

 1.2、用一段长文本,按规则提取出里面的密钥,密钥是随机的。

在服务端和客户端定义一段长文本,app端随机生成起始位置和长度,把起始位置和长度进行移位等操作,生成相应的数字,对数字进行Base64编码,生成的字符串 传给服务端,服务端根据这个字符串 就能 解析出相关的密钥。

代码如下:

iOS开发安全的方法是什么

 这样只是增加了破解者获取密钥的难度,其实并不能完全阻止破解者获取。

 2、Keychain

越狱的iPhone可以查看导出Keychain保存的信息。Keychains的内容存放在sqlite中,目录为:/private/var/Keychains。可以通过keychain-dump可以查看钥匙串里存放的的内容。

所以保存到Keychain的数据一定要是加密之后的数据。

3、plist、sqlite

plist、sqlite可以直接在ipa安装文件中获取到,所以不要在这些文件中存放重要信息,如果要保存,就进行加密后再存放。

四、app加固

1、代码混淆

代码混淆就是把易读的类名、方法名替换成不易读的名字。常用的方法有宏替换和脚本替换。比如本来方法名为:- (void)loadNetData; 进行代码混淆后,用class-dump导出头文件后会显示成修改后的方法名:-(void)showxhevaluatess;

 2、用C语言

核心代码用C语言写,但是C语言的函数也可以被hook,比如用fishhook。开发人员可以用静态内联函数来防止hock,破解者就只能去理解代码的逻辑。

 3、检测tweak

可以检测/Library/MobileSubstrate/DynamicLibraries 下的 plist 文件里是否包含自己app的bundle id。如果包含,可以进行限制app的功能、提示该手机不安全 等。

感谢各位的阅读,以上就是“iOS开发安全的方法是什么”的内容了,经过本文的学习后,相信大家对iOS开发安全的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153166.html

(0)

相关推荐

  • Java Spring Boot怎样彻底解决SSM配置问题

    技术Java Spring Boot怎样彻底解决SSM配置问题Java Spring Boot怎样彻底解决SSM配置问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来

    攻略 2021年10月31日
  • 忽视数据中心物理基础设施的现代化将产生的问题有哪些

    技术忽视数据中心物理基础设施的现代化将产生的问题有哪些这篇文章主要讲解了“忽视数据中心物理基础设施的现代化将产生的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“

    攻略 2021年10月22日
  • css修改表格边框颜色的方法是什么

    技术css修改表格边框颜色的方法是什么本篇内容介绍了“css修改表格边框颜色的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,

    攻略 2021年12月8日
  • 自建传奇4游戏加速首选轻量云轻量云香港

    技术自建传奇4游戏加速首选轻量云轻量云香港随着传奇4开服,很多国区玩家都希望拥有自用的SOCK5代理登录游戏,那么使用SOCK5代理需要注意哪些问题呢,下面就来简单介绍一下与只能处理 HTTP 和 HTTPS 网页的 H

    礼包 2021年12月14日
  • 如何使用Python进行社交媒体情感分析

    技术如何使用Python进行社交媒体情感分析这篇文章给大家介绍如何使用Python进行社交媒体情感分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。学习自然语言处理的基础知识并探索两个有用的 Pyt

    攻略 2021年10月26日
  • vue怎样通过nodejs拿取数据库数据(vue要用到nodejs中的哪些知识)

    技术vue+nodejs获取多个表数据的方法是什么这期内容当中小编将会给大家带来有关vue+nodejs获取多个表数据的方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。读取两个

    攻略 2021年12月20日