沙盒总结
2016-03-15 14:16
316 查看
在模拟器中运行iOS程序,都会为该程序创建一个沙盒(SandBox),应用沙盒就是文件系统目录,与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录。
1、每个应用程序都有自己的存储空间
2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
/Users/lanou3g/Library/Developer/CoreSimulator/Devices/2F90FE1A-A9A6-460F-85AC-5A84A660857A/data/Containers/Data/Application/F92AB308-07EF-4DA1-AEF8-0DF7B42506EA
/Users/lanou3g/Library/Developer/CoreSimulator/Devices/2F90FE1A-A9A6-460F-85AC-5A84A660857A/data/Containers/Data/Application/1E37E9BB-9C57-4465-910A-3FF2C82FEE7A
另: 沙盒安全模型限制对资源的访问,它将本地代码标注为可信赖的,同时将远程代码标注为不可信赖的。这样,本地代码对所有资源拥有完全的访问权,面远程代码在访问系统资源就会受到限制。 如果标注远程代码为可信赖的,那么在这种沙盒模型中出现一个签名远程代码的概念,就是说,如果远程代码带有数字签名标明它是受信赖的,那么这个远程代码将被视为本地代码。有权访问所有系统资源。
1、每个应用程序都有自己的存储空间
2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
1.结构
应用沙盒目录的常见获取方式:沙盒根目录:NSString *homePath =NSHomeDirectory(); Documents:最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。这里面存的数据会被上传,所以不要放比较大的文件夹(例如音频,视频) //程序中得到Documents路径 NSString * filePathOfDocuments = NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory ,NSUserDomainMask , YES ) . lastObject ; Library->Caches:缓存文件,iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。 //得到Caches路径 NSString *filePathOfCaches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES).lastObject; Library->Preferences:iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。 tmp:iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。 //得到tmp路径 NSString *filePathOfTmp = NSTemporaryDirectory();
2. 每次运行程序,沙盒所有路径都会改变
例子:这是我同一个工程运行两次后得到的两次不同的沙盒地址:/Users/lanou3g/Library/Developer/CoreSimulator/Devices/2F90FE1A-A9A6-460F-85AC-5A84A660857A/data/Containers/Data/Application/F92AB308-07EF-4DA1-AEF8-0DF7B42506EA
/Users/lanou3g/Library/Developer/CoreSimulator/Devices/2F90FE1A-A9A6-460F-85AC-5A84A660857A/data/Containers/Data/Application/1E37E9BB-9C57-4465-910A-3FF2C82FEE7A
3.沙盒技术
Sandbox——————沙箱(sandbox)允许从任何源下载代码,除非对它施加限制。JAVA使用的JAVA sandbox阻止不安全的applets访问应用。 Security Managet—安全管理器定义了sandbox的边界。JAVA API 在允许它访问任何资源之前,涉及到安全管理器。另: 沙盒安全模型限制对资源的访问,它将本地代码标注为可信赖的,同时将远程代码标注为不可信赖的。这样,本地代码对所有资源拥有完全的访问权,面远程代码在访问系统资源就会受到限制。 如果标注远程代码为可信赖的,那么在这种沙盒模型中出现一个签名远程代码的概念,就是说,如果远程代码带有数字签名标明它是受信赖的,那么这个远程代码将被视为本地代码。有权访问所有系统资源。
相关文章推荐
- 微软发布令牌漏洞公告:可绕过 Chromium 沙盒执行任意代码
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 100 个最佳 Ubuntu 应用(中)
- 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 24 个必备的 Linux 应用程序
- 注册表趣味应用小集
- 远程控制技术的应用
- 路由器访问列表的应用
- xDSL技术及其应用
- 基于XML的桌面应用
- SQL Server 2008 R2 应用及多服务器管理
- ExtJS 2.0实用简明教程之应用ExtJS
- JSP应用的安全问题
- 前端开发必须知道的JS之闭包及应用