前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >苹果沙盒机制详解

苹果沙盒机制详解

作者头像
Al1ex
发布2024-05-08 15:07:47
670
发布2024-05-08 15:07:47
举报
文章被收录于专栏:网络安全攻防网络安全攻防
基本介绍

沙盒(SandBox)是IOS的一个防御机制,每个应用都会有一个自己的沙盒,应用只能在自己的沙盒目录下读写数据,应用A不能访问应用B的沙盒,他们之间是相互隔离的,正因为如此攻击者在上传恶意程序后即时侥幸的通过了App Store的审核被安装到用户的手机之后也不能获取其他应用的数据,当然在在用户授权的情况下应用也可以访问其他目录下面的文件,比如:用户授权情况下应用可以访问相册、通讯录,在开发中经常会涉及到iOS沙盒目录,比如:读写文件,归档解档等

沙盒目录

iOS的沙盒目录是每个应用程序在iOS设备上分配的私有文件系统空间,用于存储应用程序的数据和文件,每个应用程序都有其独立的沙盒目录,其他应用程序无法直接访问其中的内容,下面是获取iOS沙盒目录的方法

手动检索

(1) Documents目录

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/Documents/

目录用途:存储应用程序创建的用户数据和文件,例如:文档、用户生成的媒体内容等,这些文件会被备份到iCloud

(2) Library目录

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/Library/

a、Caches

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/Library/Caches/

主要作用:存储应用程序的缓存文件,例如:临时下载文件、图片缓存等,这些文件不会被备份到iCloud,并可能在设备存储空间不足时被系统清理

b、Preferences

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/Library/Preferences/

主要作用:存储应用程序的偏好设置文件,例如:用户设置、配置信息等

c、Application Support

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/Library/Application Support/

主要作用:存储应用程序的持久化数据,例如:数据库文件、配置文件等

d、Logs

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/Library/Logs/

主要作用:存储应用程序的日志文件,用于调试和故障排查

(3) Tmp目录:

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/tmp/

主要用途:存储应用程序的临时文件,例如:下载的临时文件、缓存文件等,这些文件可能在应用程序被关闭后被清理,不会被备份到iCloud

(4) systemData目录

目录路径:/var/mobile/Containers/Data/Application/{App-UUID}/systemData/

主要用途:SystemData 目录是一个系统级别的目录,用于存储与操作系统相关的数据和文件

(5) 包内资源目录

目录路径:应用程序的主包内

主要用途:存储应用程序的资源文件,例如:图像、音频、视频、配置文件等,这些文件在应用程序安装后不可更改并受到应用程序签名的保护

模拟器类

Mac为IOS开发人员提供的Xcode自带模拟器,我们使用其进行IOS开发时可以直接通过以下方式来获取到本地的沙盒文件,比较特殊的是其沙盒文件在个人username目录下的一个隐藏目录里,中文叫资源库,事实上就是Library,在查看之前我们先要在终端中执行如下命令来设置查看隐藏文件的方法

代码语言:javascript
复制
#显示Mac隐藏文件的命令
defaults write com.apple.finder AppleShowAllFiles -bool true
    
#隐藏Mac隐藏文件的命令
defaults write com.apple.finder AppleShowAllFiles -bool false

随后鼠标单击窗口左上角的苹果标志-->强制退出-->Finder

随后即可看到资源库文件目录:

打开资源库后找到"Developer/CoreSimulator/Devices/设备标识符/data/"

这里的资源库即对应着Library

程序查看

我们可以在Xcode中通过以下代码的方式来检索对应的沙盒目录文件:

代码语言:javascript
复制
//
//  ViewController.m
//  testSandbox
//
//  Created by exchen on 2018/4/8.
//  Copyright ? 2018年 exchen. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end


@implementation ViewController

-(void)getPath{
    //获取沙盒根目录路径
    NSString*homeDir = NSHomeDirectory();
    NSLog(@"homedir: %@",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);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self getPath];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

输出结果如下:

代码语言:javascript
复制
2023-09-04 23:23:19.714652+0530 testSandbox[1710:40573] homedir: /Users/Ring001/Library/Developer/CoreSimulator/Devices/00A9F66B-8D0B-4485-B4D2-E435F023A8EE/data/Containers/Data/Application/F321B8D8-29C3-4A5F-954A-08EB84D1C3A3
2023-09-04 23:23:19.715165+0530 testSandbox[1710:40573] docDir: /Users/Ring001/Library/Developer/CoreSimulator/Devices/00A9F66B-8D0B-4485-B4D2-E435F023A8EE/data/Containers/Data/Application/F321B8D8-29C3-4A5F-954A-08EB84D1C3A3/Documents
2023-09-04 23:23:19.715615+0530 testSandbox[1710:40573] libDir: /Users/Ring001/Library/Developer/CoreSimulator/Devices/00A9F66B-8D0B-4485-B4D2-E435F023A8EE/data/Containers/Data/Application/F321B8D8-29C3-4A5F-954A-08EB84D1C3A3/Library
2023-09-04 23:23:19.719813+0530 testSandbox[1710:40573] cachesDir: /Users/Ring001/Library/Developer/CoreSimulator/Devices/00A9F66B-8D0B-4485-B4D2-E435F023A8EE/data/Containers/Data/Application/F321B8D8-29C3-4A5F-954A-08EB84D1C3A3/Library/Caches
2023-09-04 23:23:19.720372+0530 testSandbox[1710:40573] tmpDir: /Users/Ring001/Library/Developer/CoreSimulator/Devices/00A9F66B-8D0B-4485-B4D2-E435F023A8EE/data/Containers/Data/Application/F321B8D8-29C3-4A5F-954A-08EB84D1C3A3/tmp/
2023-09-04 23:23:19.721101+0530 testSandbox[1710:40573] appDir: /Users/Ring001/Library/Developer/CoreSimulator/Devices/00A9F66B-8D0B-4485-B4D2-E435F023A8EE/data/Containers/Bundle/Application/55F7F1CA-107D-48F4-9121-F078447B4451/testSandbox.app

文末小结

本篇文章主要介绍了苹果的沙盒机制~

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-07,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本介绍
  • 沙盒目录
    • 手动检索
      • 模拟器类
        • 程序查看
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com