返回顶部
首页 > 资讯 > 精选 >iOS开发怎样避免安全隐患
  • 511
分享到

iOS开发怎样避免安全隐患

2023-06-05 02:06:27 511人浏览 薄情痞子
摘要

本篇内容主要讲解“iOS开发怎样避免安全隐患”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ioS开发怎样避免安全隐患”吧!一、网络方面用抓包工具可以抓取手机通信接口的数据。以Charles为例,

本篇内容主要讲解“iOS开发怎样避免安全隐患”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习ioS开发怎样避免安全隐患”吧!

一、网络方面

用抓包工具可以抓取手机通信接口的数据。以Charles为例,用Charles可以获取Http的所有明文数据,配置好它的证书后就可以模拟中间人攻击,获取https加密前的明文数据。

1 中间人攻击

先简要地说下什么是中间人攻击:

①客户端:“我是客户端,给我你的公钥” -> 服务端(被中间人截获)。

所以现在是:

客户端->中间人

②然后中间人把消息转给服务端,也就是:

中间人->服务端

③服务端把带有公钥的信息发送给客户端,但是被中间截获。所以是:

服务端-[服务端的公钥] ->中间人

④中间人把服务端的公钥替换成自己的公钥,发送给客户端,声称是服务端的公钥:

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

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

这样中间人就可以获取到双方的通信数据,并可以制造虚假数据。

2 如何防范中间人攻击?

下面开始说如何防范:

1 SSL Pinning

SSL Pinning的原理就是把服务端的公钥存到客户端中,客户端会校验服务端返回的证书是否和客户端保存的一致,这样就避免了中间人替换证书进行的攻击。

SSL Pinning的实现比较简单,只需要把CA证书放入项目中,通过Security framework实现NSURLSession上的SSL Pinning。如果用的是AFNetworking,代码更简单一点:

iOS开发怎样避免安全隐患

这样通过Charles抓包就会报错。

iOS开发怎样避免安全隐患

证书验证有可以只验证公钥(AFSSLPinningModePublicKey),也可以完全验证证书(AFSSLPinningModeCertificate)。

但是用SSL Pinning有个很严重的问题,就是如果证书有问题,只有发布新版本才能解决。如果新版本一直审核不通过,app的网络通信就全部挂掉了。

比如赛门铁克(Symantec)证书被Google和iOS12不信任的问题。如果app内置了证书,就必须要重新发版。

2 接口内容进行加密

很多的app接口只对请求的参数进行加密和各种验证,而接口返回过来的数据就是明文。如果不用SSL Pinning来防止中间人攻击,也可以把接口返回的数据也进行加密,这样抓包工具抓到包后也依然不能破解。

比如微信,微信中的接口用的是http协议,但是内容全部进行了加密。

iOS开发怎样避免安全隐患

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

二、日志

1 Swift日志

Swift中打印日志的语法可以用print,也可以用NSLog。但是尽量别用NSLog,因为Swift中用NSLog,系统日志中是能查到的。可以通过pp助手、iTools或者Xcode的Devices and Simulators 来查看系统日志。

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

2 OC日志

在release环境下不要输出NSLog日志。一般大家都会用宏定义解决,如下:

iOS开发怎样避免安全隐患

三、信息的存储

1 密钥

大部分的程序员喜欢直接把密钥放到宏或者常量里。

如:#define AES_KEY @“aaa123"

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

对密钥(A)进行加密后定义为宏(B),使用的时候进行解密得到密钥(A)。其中对密钥A加密的密钥为C。

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

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

在服务端和客户端定义一段长文本,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开发怎样避免安全隐患”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: iOS开发怎样避免安全隐患

本文链接: https://lsjlt.com/news/240717.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • iOS开发怎样避免安全隐患
    本篇内容主要讲解“iOS开发怎样避免安全隐患”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“iOS开发怎样避免安全隐患”吧!一、网络方面用抓包工具可以抓取手机通信接口的数据。以Charles为例,...
    99+
    2023-06-05
  • iOS开发避免安全隐患的要点总结
    现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全。 一、网络方面 用抓包工具可以抓取手机通信接口的数据。以C...
    99+
    2022-05-22
    iOS 开发 安全隐患
  • iOS开发中多线程的安全隐患总结
    资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象、同一个变量、同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安...
    99+
    2022-05-27
    iOS 多线程 安全隐患
  • PHP面试:如何避免二维码重定向带来的安全隐患?
    随着移动支付的普及,二维码支付已成为大众生活中不可或缺的一部分。然而,二维码重定向攻击却是一个仍然存在的安全隐患,攻击者可以通过篡改二维码链接,将用户重定向到恶意网站,从而盗取用户的敏感信息。本文将介绍如何避免二维码重定向带来的安全隐患。...
    99+
    2023-06-15
    面试 二维码 重定向
  • http免费代理ip有什么安全隐患
    本篇内容介绍了“http免费代理ip有什么安全隐患”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!伴随着因特网的发展,网站的各种限制越来越多,...
    99+
    2023-06-20
  • IP免费代理的安全隐患有哪些
    这篇文章主要介绍了IP免费代理的安全隐患有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。伴随着因特网的发展,网站的各种限制越来越多,代理IP的用户也越来越多。但仍有一部分...
    99+
    2023-06-20
  • Win7系统无用账户如何删除以避免不必要的安全隐患
      当一个计算机Win7系统用户名称不再使用时,要及时将其删除,以避免不必要的安全隐患和资源浪费,操作步骤如下:   步骤1:执行【开始】丨【程序】丨【管理工具】I【Active Directory用户和计算机】命令,打...
    99+
    2023-06-02
    Win7 删除无用账户 安全隐患 系统 账户
  • 安全漏洞猎人:发现并修复数据库安全隐患
    数据库作为企业信息系统的核心,其安全至关重要。安全漏洞猎人扮演着至关重要的角色,通过渗透测试发现并修复数据库中的安全隐患,为企业保驾护航。 漏洞发现:探索数据库的薄弱点 安全漏洞猎人采用各种渗透测试技术,对数据库进行全方位的扫描和检测。他...
    99+
    2024-03-07
    数据库安全 漏洞猎人 渗透测试 修复措施
  • PHP代码审计:深入解析,揭开安全隐患
    : PHP代码审计是一项重要的安全实践,可以帮助识别和修复应用程序中的安全漏洞,防止攻击者利用这些漏洞进行攻击。PHP代码审计可以手动进行,也可以使用自动化工具进行。手动代码审计需要具备一定的PHP编程知识和安全知识,自动化工具可以帮助分...
    99+
    2024-02-09
    :PHP代码审计 安全漏洞 黑客攻击 入侵检测 渗透测试
  • 怎么进行Docker数据安全隐患分析
    本篇文章为大家展示了怎么进行Docker数据安全隐患分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Docker容器为应用的编写、分发和部署带来真正翻天覆地的变化。容器的目的是灵活性,让应用可按需...
    99+
    2023-06-17
  • C++开发注意事项:避免C++安全漏洞的发生
    C++开发是一项广泛应用于软件开发领域的技术,其灵活性和高效性使其成为许多项目的首选语言。然而,随之而来的是需要特别注意C++代码中的安全漏洞。本文将介绍一些C++开发注意事项,以帮助开发人员避免常见的安全漏洞的发生。数组越界访问:C++中...
    99+
    2023-11-22
    安全 开发 漏洞
  • 如何在PHP开发中避免常见的安全漏洞?
    如何在PHP开发中避免常见的安全漏洞?PHP是一种常用的服务器端脚本语言,广泛应用于Web开发。然而,由于其易用性和灵活性,PHP应用程序容易受到各种安全威胁。为了保护Web应用程序免受黑客攻击和数据泄露,开发者需要采取一些防范措施。下面是...
    99+
    2023-11-03
    安全漏洞 跨站脚本攻击 以防止SQL注入
  • Python开发注意事项:避免常见的安全漏洞
    Python作为一种简单易学的编程语言,被广泛应用于各类软件开发项目中。然而,随着互联网的发展和信息安全的重要性日益凸显,开发者们也越来越需要关注代码的安全性。本文将介绍一些在Python开发过程中需要注意的常见安全漏洞,并提供一些避免这些...
    99+
    2023-11-22
    sql注入 输入验证 跨站脚本攻击(XSS)
  • iOS开发常用线程安全锁
    目录正文原子属性OSSpinLock - 自旋锁os_unfair_lock - 互斥锁NSLock - 互斥锁NSCondition - 互斥锁NSConditionLock - ...
    99+
    2024-04-02
  • Python开发注意事项:避免常见的安全漏洞和攻击
    Python作为一种广泛应用的编程语言,在大量的软件开发项目中得到了广泛的应用。然而,由于它的广泛使用,一些开发者可能会忽视一些常见的安全注意事项,从而导致软件系统的易受攻击和安全漏洞的产生。因此,在Python开发过程中,避免常见的安全漏...
    99+
    2023-11-22
    攻击 安全漏洞 注意事项
  • 操作系统线程管理中的安全隐患:并发执行的潜在威胁
    1. 竞态条件 竞态条件发生在一个共享资源的访问和修改没有得到适当同步的情况下,导致程序的行为不确定。多个线程同时试图访问同一资源,可能会导致意外修改或数据损坏。 2. 死锁 死锁发生当两个或多个线程相互等待对方释放资源的情况。这会导致整...
    99+
    2024-04-02
  • web开发中低代码开发会带来怎样的安全风险
    今天就跟大家聊聊有关web开发中低代码开发会带来怎样的安全风险,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Gartner 还预测,在疫情期间远程开...
    99+
    2024-04-02
  • 思科向winXP用户发布警告 称未修复漏洞存在严重安全隐患
    Net Market Share今天公布的最新Windows市场报告显示XP系统占比为13.57%,相比较十月(17.18%)呈明显下降趋势,但不可否认的是全球依然有很多用户使用该系统。近日网络设备开发商思科向Windo...
    99+
    2023-06-09
    思科 winXP 漏洞 安全隐患 用户
  • Win11隐私和安全性怎么设置?Win11开启隐私和安全性功能方法
      Win11隐私和安全性怎么设置?使用电脑的时候,为了让我们使用过程中保存到电脑中的一些信息更加安全,可以去系统设置中去开启安全隐私设置,开启之后能够对我们的个人信息提供一些保护。那么如何去进行此功能的开启呢?一起来看...
    99+
    2023-05-19
    Win11隐私和安全性 Win11开启隐私 Win11安全性
  • ios开发中如何全局设置navigationBar标题的样式和barItem的标题样式
    小编给大家分享一下ios开发中如何全局设置navigationBar标题的样式和barItem的标题样式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作