iOS程序的安全性

本文详细介绍了iOS应用安全的多个方面,包括如何分析和动态修改app、关键数据的保存方式、通信的安全措施等,并探讨了安全与成本之间的平衡。

出自:http://wufawei.com/2013/07/iOS-application-security/

文章分A,B,C,D 4个部分。

A) iOS Application Security


下面介绍iOS应用安全,如何分析和动态修改app。 
1)iOS Application security Part 1 – Setting up a mobile pentesting platform Part1介绍如何在越狱的设备上搭建用来测试iOS安全的环境。

2)iOS Application security Part 2 – Getting class information of IOS apps Part2介绍如何利用class-dump-z 和 Clutch 来dump类信息,利用这些信息,可以理解代码的设计和代码内部是如何工作的。
有没有可能我们去动态修改app呢?
例如有一个方法 -(BOOL)isFacebookSessionValid ,在某种情况下返回 NO,有没有方法操纵它让它返回YES呢?
可不可以在运行时修改 instance variable变量的值呢?
答案是:YES

3) iOS Application security Part 3 – Understanding the Objective-C Runtime Part3提到Method Swizzling.我之前有篇blog有过介绍,参见:Monkey Patching iOS with Swizzling

4) iOS Application Security Part 4 – Runtime Analysis Using Cycript (Yahoo Weather App)

Part4介绍了用Cycript动态分析和修改app的方法。文章拿Yahoo Weather app做的例子。其中一处改动是给加上了badge number。

5)IOS Application security Part 5 – Advanced Runtime analysis and manipulation using Cycript (Yahoo Weather App)

Part5 分享了一些高级分析技术。分析了如何获得特定类的信息(方法名,实例变量名称),并且如何在运行时修改。

6)IOS Application Security Part 6 – New Security Features in IOS 7

7)IOS Application Security Part 7 – Installing and Running Custom Applications on Device without a registered developer account



B)关键数据的保存。

在本地保存的数据,一般来说,要么:
1)存本地db。 
2)存plist文件。 ([NSUserDefaults standardUserDefaults] 也是一个plist文件)
3)存入keychain。

如果直接保存明文,即使在keychain中,也不安全。 之前我写过一篇blog,keychain is not safe,里面提到了某微博,其实就是新浪微博客户端把用户密码存在keychain中,在一定条件下,也是可以提取出来的

(下面图中password所在位置就是我新浪微博的密码,为了演示,这里做了修改)

所以,关键数据是需要加密的。Encrytion is a must for sensitive data.


C)通信的安全。

一般来说,http请求都应该要做到能够防篡改、防重放攻击(replay attack)等等,如果安全要求更高,还要用https, 在客户端用https,也要注意对源的校验。(通过SSL Pining提供iOS SSL通信的安全)。

比如一些涉及到关键业务的东西,不能够直接给个URL,任何人都能从PC上就下载,一定要做身份校验,甚至要有time out值(URL里面有时间戳)。

比如最近大家看到的关于支付宝插件的分析相关文章(参见:分析支付宝客户端的插件机制浅析支付宝钱包插件再谈支付宝钱包插件和说好的 Demo),如果是你来设计,请问会从哪些方面来加强安全呢。

我想到这些:
1)插件内容加密
这里做到加密关键部分即可。在加载插件对应功能的时候,把对应功能解密到内存中,文件系统中还是保持加密状态。

2) 下载插件的URL做身份验证

3) 插件里面的JS做混淆

4)关键逻辑和代码,放在native实现

5)加入冗余代码,让代码不易被看懂


D)安全 VS 成本

对于个人用户来说,尽量不要越狱,不使用免费WIFI登陆敏感网站。(很多免费WIFI传输都不加密,加密的密码很可能也是123456这种,很容易被hack;或者这个WIFI,本身就是别有企图的人提供的)。

对企业来说,就既要考虑通信的安全,也要考虑客户端的安全等等。直接把用户的密码存在本地,安全上是有风险。

安全是相对的,A)中分享的文章可以看到,即使把关键逻辑放在iOS native code中去实现,也是可能被hack,被破解的。但是,这个需要的技巧和能力就会要求更高。

你的业务是什么,你打算以多大的成本来提高安全性,业务越critical,要求越高。

对于和钱打交道的app,至少,你需要提高门槛。

You should raise the bar.

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
iOS安装包的安全性测试是为了保证应用程序在用户设备上的安全性和稳定性。下面是一些常见的iOS安装包安全性测试项目: 1. 恶意代码检测:通过对安装包进行恶意代码扫描和分析,以确保应用程序没有包含恶意代码,以防止对用户设备和数据的攻击。 2. 代码完整性检查:通过验证应用程序的代码完整性,以确认它们没有被篡改或修改,从而保证应用程序没有被恶意攻击者植入恶意代码或后门。 3. 权限验证:检查应用程序在安装和运行时请求的权限是否合理和符合规范,以防止应用程序滥用用户设备的权限,例如未经允许地访问联系人、位置信息等。 4. 数据保护检查:检查应用程序对用户数据的保护措施,包括使用正确的加密算法、安全存储用户数据、合理处理敏感信息等,以确保用户数据的安全。 5. 漏洞扫描:通过对应用程序进行漏洞扫描,发现和修复安全漏洞,以防止黑客利用这些漏洞进行攻击,例如XSS跨站脚本、SQL注入等。 6. 安全通信检查:确保应用程序与服务器之间的通信采用安全的协议和加密算法,以防止通信过程中的信息泄露或中间人攻击。 7. 安全认证和授权:检查应用程序的认证和授权过程,以确认只有合法用户才能访问和使用应用程序的功能和数据。 通过进行这些安全性测试,可以及时发现和修复应用程序的安全问题,保护用户设备和数据的安全,确保用户能够安全地使用应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值