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)

相关推荐

  • 如何实现基于webpack实现Web工程搭建

    技术如何实现基于webpack实现Web工程搭建这篇文章给大家介绍如何实现基于webpack实现Web工程搭建,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.引言随着互联网前端技术的发展,在前端工

    攻略 2021年12月11日
  • vue中自定义一个全局指令(vue什么情况使用自定义指令)

    技术vue中有哪些自定义指令这篇文章主要介绍“vue中有哪些自定义指令”,在日常操作中,相信很多人在vue中有哪些自定义指令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中有哪些自定

    攻略 2021年12月16日
  • c#的ScaleOPC.DLL功能有哪些

    技术c#的ScaleOPC.DLL功能有哪些本篇内容主要讲解“c#的ScaleOPC.DLL功能有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c#的ScaleOPC.D

    攻略 2021年11月26日
  • C++引用的基本概念是什么

    技术C++引用的基本概念是什么本篇文章给大家分享的是有关C++引用的基本概念是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++编程语言中有很多应用方

    攻略 2021年10月27日
  • 牛客网面试题

    技术牛客网面试题 牛客网面试题目录
    一、JAVA
    二、计算机网络
    三、操作系统
    四、项目
    五、数据库
    第六部分 框架
    第七部分 设计模式
    第八部分 数据结构和算法
    第九部分 Linux
    ########

    礼包 2021年12月20日
  • 名字的意义,大家来说说自己名字的含义

    技术名字的意义,大家来说说自己名字的含义先说我头条号的名字名字的意义:树德汉硕,这是我父子名合到一起的名字。我姓口天吴,父叫树德,我叫汉硕。树汉是排辈字,我祖排辈上下排辈是:……超瑞世毓树汉裕厚发宗光……,我儿是裕字辈。

    生活 2021年10月29日