沙箱的工作机制是什么_什么是沙箱机制
大家可能都听说过以太坊上的智能合约是在沙盒中运行的。那么到底什么是沙盒呢?
1.为什么需要沙盒机制?
默认情况下,应用程序可以访问机器上的所有资源,如CPU、内存、文件系统、网络等。
然而,这并不安全。如果随意操纵资源,可能会破坏其他应用程序正在使用的资源,或者导致数据泄漏。为了解决这个问题,一般有以下两种解决方案:
(1)给程序分配一个权限有限的账号:利用操作系统的权限管理机制对其进行限制。
(2)为程序提供有限的运行环境:这就是沙箱机制。
2.什么是沙盒机制?
如上所述,沙箱是限制应用程序访问系统资源的操作环境。
沙盒通常在虚拟机(VM)中实现,如Java的虚拟机JVM,Javascript的虚拟机V8引擎,Android的虚拟机Dalvik/ART,以太坊的虚拟机EVM。具体实现方式不一样。本文重点研究了JVM和EVM的沙盒机制实现。
3.3的沙盒机制。虚拟机(Java Virtual Machine的缩写)
JVM的沙盒机制大致可以分为三层:
级别1:类装入器
采用父委托的模式,下级类装入器收到类装入请求时,需要委托给上级类装入器区域完成,只有当上级类装入器无法完成请求时,才会再次委托给下级类装入器。通过这种机制,保证了系统的核心类不会被篡改,恶意代码无法访问关键资源。
第2层:字节码检查器
字节码加载后,需要进行字节码级别的检查,包括以下内容:
(1)变量在使用前应该初始化。
(2)方法调用应该匹配之前的对象引用类型。
(3)未违反访问私有数据和方法的规则。
(4)对局部变量的访问属于运行时堆栈。
(5)运行时堆栈不会溢出。通过这种机制,可以保证字节码符合Java语言规范,避免无效访问或越界访问。
第三层:安全经理
这一层由应用开发者维护,开发者可以根据自己的需求制定相应的安全策略。默认安全策略配置位于以下两个配置文件中:
$ JAVA _ HOME/conf/security/JAVA . security
$ JAVA _ HOME/conf/security/JAVA . policy
默认情况下,安全管理器是不打开的,因此您可以在命令行中添加一个参数来打开它:
java -Djava.security.manager沙盒测试
默认安全策略配置不允许应用程序读取和写入文件,因此如果您尝试写入文件,运行时将报告以下错误:
如果你想打开这个权限,你可以写自己的安全策略文件,比如我们可以写一个my.policy:
然后在运行时指定此策略配置:
Java-DJ ava . security . manager-DJ ava . security . policy=./my.policy沙盒测试
应用开发者可以精细定制不同的应用场景,控制程序对网络、文件、属性等内容的访问权限。
4.4的沙盒机制。EVM
EVM本身是一个相对封闭的环境,不支持直接访问网络和文件系统。从这个角度来看,它起到了沙盒的作用:
此外,当智能合约相互调用时,EVM会重新分配堆栈和内存空间,在全新的环境中运行新合约,即使出现问题,也不会破坏原有的执行环境,从而为智能合约的执行提供沙盒环境。
最后,每个智能合约的存储也是相互独立的,开发者可以根据自己的需求限制合约可以访问的存储空间,避免未经授权的访问或修改。例如,下图描述了CALL和CALLCODE指令在访问存储空间时的区别:
推荐阅读
- 糜烂性胃炎的饮食禁忌是什么? 胃炎吃谷氨酰胺的好处
- 攀枝花市十五录取分数线? 攀枝花十五中
- 大q吧怎么样(大q吧奇迹)
- 失联车辆查找车渠道,找车:失联车找回,丢失车找回,全国找车寻车
- 取保一年,开庭以后又收监,其中的原因是什么?还有机会是缓刑吗? 很多取保的都被收监了
- 沈阳农业大学怎么样?沈阳农业大学最佳专业排名和王牌专业
- 尼康s9000系列(尼康s9000)
- 代理公司注册的流程是怎样的 代理注册公司
- 自驾游网红阿姨苏敏,自驾阿姨苏敏丈夫首发声:打人是平常的事
- 中南大学哪个专业强(中南大学的王牌专业是哪些)
- wpa2包含下列哪个协议标准的所有安全特性_WPA与WPA2协议的安全区别、优缺点
- 夏普彩电是什么地方生产(夏普彩电)
- 2022年社保个人缴费多少钱? 养老保险怎么交 个人一年多少钱
- 麦道md-80的介绍,P3D Leonardo MD麦道-82 中文指南 6.1起飞很简单
- 海信E900(海信eg900论坛)
- 高达67分!陕西2019高考文史类二本400分(理工类363分!三本取消后分数变了)
- 聚对苯二甲酸乙二醇酯结构单元? 精对苯二甲酸分子式
- 工程承包合同范本? 工程承包合同范本通用
- bcd是什么意思(bcd)