iCloud云备风险

部署运行你感兴趣的模型镜像

iCloud是Apple提供给用户的云同步工具,主要用于丢失设备或购买新设备时,可以轻松地恢复先前设备上拥有的相同信息。但当用户的Apple ID失窃之后,则可能面临用户数据被盗取的风险。

iCloud备份

---

iCloud的相关信息,Apple在Support中提供了部分说明[^1]:

### iCloud的备份信息

* 已购买的音乐、影片、电视节目、App 和图书

* “相机胶卷”中的照片和视频

* 设备设置

* App 数据(包括:Keychain、数据Document文件夹,不包含tmp和Cache临时文件)

* 主屏幕和 App 排列

* 信息(iMessage、短信和彩信)

* 铃声

* Visual Voicemail

### iCloud的备份时间

当iOS设备接通电源、被锁定(锁屏)且接入无线局域网时,iCloud云备份会自动运行。

### iCloud的备份特点

根据iTunes备份提供的官方文档说明[^2],iTunes备份可选择使用两种方式进行:一种是备份文件使用单独密码加密,另外一种是不含密码加密。

iCloud备份和iTunes的备份除完整性上的区别外,区别主要在于Keychain数据处理上。在常见的iTunes备份中,备份的敏感数据(如keychain)是可选择使用单独密码或不使用单独密码方式加密(使用UDID等硬件信息加密)。iCloud该选项不可设置,默认加密使用设备的UDID等硬件信息加密。

当包含单独密码时,敏感数据(如Keychain)是可以直接备份至新手机中,若不设置密码(或iCloud方式)则在相同手机上则才可还原敏感信息(如Keychain)。

存在的问题

---

由于iCloud会备份App数据,包括不限于keychain和程序文档目录,因此一些重要的iOS保存信息会随iCloud被同样备份。

当用户Apple ID被盗后,盗用者可在一台iOS设备上恢复远程正常用户手机的备份内容,并且可实现免密码登录部分系统的功能。

截至本文写成时,微信尚存在此问题。(时间较久,最新版本轻自行测试。)

同样的问题也存在于iTunes备份中,相对来说,窃取用户电脑上的iTunes备份的困难度和复杂度也较单独窃取Apple ID难度高。但若获取到iTunes备份,且获取iTunes备份密码的前提下,则可完成对设备的完全复制,包括Keychain数据。

同样在iOS系统越狱环境中,攻击者可通过程序伪造UDID信息等方式,在iCloud恢复备份时同样恢复Keychain中的数据备份。

解决方案

---

###针对文件的备份

针对文件的iCloud备份,可使用NSURL类的NSURLIsExcludedFromBackupKey方法[^3]实现判断文件是否包含在备份文件中。

同样,可通过对设备上的文件设置该属性,禁用该文件被iCloud备份。

适用于iOS 5.1以上系统:

```
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
    NSError *error = nil;
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];
     if(!success){
        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
     }
    return success;
}
```

适用于iOS 5.0.1系统:

```
#import <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
    const char* filePath = [[URL path] fileSystemRepresentation];
    const char* attrName = "com.apple.MobileBackup";
    u_int8_t attrValue = 1;
    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
     return result == 0;
}
```

目前iOS 5.0系统没有禁用iCloud方式的方法,唯一防止备份的方法为将文件放置于Cache文件夹中。

[^1]: [iCloud: iCloud Backup](http://support.apple.com/kb/PH2584)

[^2]: [iTunes: About iOS backups](http://support.apple.com/kb/HT4946)

[^3]: [NSURL Class Reference](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html)

[原文地址]

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值