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)

相关推荐

  • 加拿大动物,加拿大的代表动物是什么

    技术加拿大动物,加拿大的代表动物是什么加拿大的国兽,海狸(英语叫BEAVER),也叫河狸,它是一种躯体肥胖的啮齿类动物,外型酷似大老鼠。海狸身上有两宝,一种是用于制作香水的原料,属于海狸性腺分泌的液体;另一种是海狸油光水

    生活 2021年10月27日
  • visualstudio调试器怎么关闭(visualstudio怎么取消实时调试器)

    技术如何浅析Visual Studio调试中断点的设置本篇文章给大家分享的是有关如何浅析Visual Studio调试中断点的设置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年12月19日
  • 雷锋的故事50个字,冰心的五个真实故事50字

    技术雷锋的故事50个字,冰心的五个真实故事50字1雷锋的故事50个字、童年好学冰心4岁时,就在母亲和舅舅杨子敬的督促下,开始读书认字。母亲教她“字片”,舅舅教她课本,并给她讲《三国》故事。
    她7岁时,开始读《三国演义》,

    生活 2021年10月30日
  • Cortex-M0中断控制和系统控制,二)

    技术Cortex-M0中断控制和系统控制,二) Cortex-M0中断控制和系统控制(二)转载:https://aijishu.com/a/1060000000237975
    每一个外部中断都有一个对应的

    礼包 2021年11月30日
  • 氯化钙是沉淀吗,氯化钙静止时间长会不会产生沉淀

    技术氯化钙是沉淀吗,氯化钙静止时间长会不会产生沉淀不会与氯化钙的密度一类的有关了,温度啊,通风情况啊,都有一定的关系,与CO2加入石溶液是一样的道理氯化钙是沉淀吗。 CO2与SO2加入水中会生成碳酸和亚硫酸,酸与盐反应生

    生活 2021年10月20日
  • 种马后宫小说,你看过后宫最多的小说是哪一部

    技术种马后宫小说,你看过后宫最多的小说是哪一部说道这个种马后宫小说,我觉得最多的要数天堂不寂寞的《异界之风流大法师》了。这本书是一本西方魔法类的小说,讲述的是一个特种军人穿越到了异世一个纨绔二代的身上,并且刚附体就把帝国

    生活 2021年10月21日