iOS 沙盒机制

简介: iOS 沙盒机制

沙盒(sandbox)是 iOS 的一个防御机制,每个应用都有一个属于自己的沙盒。应用只能在自己的沙盒目录下读写数据,应用 A 不能访问应用 B 的沙盒,它们之间是互相隔离的。正因如此,攻击者在上传恶意程序后,即使侥幸通过了 App Store的审核,安装到用户手机上的应用也无法获取其他应用的数据。获取沙盒目录的方法如下:

- (void)getPath{
    //获取沙盒根目录路径
    NSString *homeDir = NSHomeDirectory();
    NSLog(@"honedir:%@",homeDir);
    //获取 Documents 目录路径
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSLog(@"docDir: %@",docDir);
    //获取 Library 目录路径
    NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
    NSLog(@"libDir: %@",libDir);
    //获取 cache 目录路径
    NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
    NSLog(@"cachesDir: %@",cachesDir);
    //获取 tmp 目录路径
    NSString *tmpDir = NSTemporaryDirectory();
    NSLog(@"tmpDir: %@",tmpDir);
    //获取应用自身的 xx.app 目录
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *strAppPath = [bundle bundlePath];
    NSLog(@"appDir: %@",strAppPath);
}


输出的结果如下:


1684473938430.png


沙盒机制限制了应用只能读写沙盒之内的文件,而我们在有些情况下需要访问一些公共资源(比如通讯录、短信、照片和位置等),这些是存在于沙盒之外的。针对这个问题,苹果公司提供了公开的 API 用于访问公共资源,并且每次访问时都会弹出申请权限提示框,只有用户允许后,才能访问成功,比如微信访问照片时会提示需要用户授权,如图所示。


1684473955958.png

目录
相关文章
|
10月前
|
存储
13-iOS消息转发机制以及常用场景
13-iOS消息转发机制以及常用场景
35 0
|
24天前
|
安全 算法 数据安全/隐私保护
探索iOS与Android的隐私保护机制
【6月更文挑战第5天】在数字时代,隐私保护已成为用户最关心的问题之一。iOS和Android作为两大主流操作系统,各自发展出了独特的隐私保护技术。本文将深入探讨这两个平台在隐私保护方面的策略、技术和挑战。
21 3
|
iOS开发
iOS开发 - 通过代码获取沙盒启动图片
iOS开发 - 通过代码获取沙盒启动图片
143 0
|
iOS开发
iOS开发 -关于使用iOS沙盒路径遇到的问题
iOS开发 -关于使用iOS沙盒路径遇到的问题
86 0
|
安全 数据安全/隐私保护 iOS开发
iOS逆向-day9:签名机制(下)
iOS逆向-day9:签名机制(下)
295 0
iOS逆向-day9:签名机制(下)
|
存储 安全 数据安全/隐私保护
iOS逆向-day9:签名机制(中)
iOS逆向-day9:签名机制(中)
155 0
iOS逆向-day9:签名机制(中)
|
算法 网络安全 数据安全/隐私保护
iOS逆向-day9:签名机制(上)
iOS逆向-day9:签名机制(上)
146 0
iOS逆向-day9:签名机制(上)
|
数据库 iOS开发
iOS开发技巧之查看模拟器沙盒文件
iOS开发技巧之查看模拟器沙盒文件
1251 0
iOS开发技巧之查看模拟器沙盒文件
|
安全 iOS开发 开发者
iOS中RunLoop机制浅探
iOS中RunLoop机制浅探
119 0
|
测试技术 iOS开发
APNS IOS 消息推送沙盒模式和发布模式
在做.NET向IOS设备的App进行消息推送时候,采用的是PushSharp开源类库进行消息的推送,而在开发过程中,采用的是测试版本的app,使用的是测试的p12证书采用的是ApnsConfiguration.ApnsServerEnvironment.Sandbox模式,而在项目发布之后,现在使用的是发布版的证书进行推送,发现不能推送成功,最后才发现在使用PushSharp进行发布后的项目的推送需要使用ApnsConfiguration.ApnsServerEnvironment.Production模式。
1376 0