java 沙箱机制_浅析沙箱机制(Sandboxie)

每个人都可能听说过以太坊的智能合约正在沙盒中运行。那沙盘究竟是什么?本文将带您了解这种机制的奥秘。

1.为什么需要沙盒机制?

默认情况下,应用程序可以访问计算机上的所有资源,例如CPU,内存,文件系统,网络等。

但这不安全。如果您随意操作资源,可能会损坏其他应用程序正在使用的资源,或导致数据泄漏。为了解决这个问题,通常有两种解决方案:

(1)为程序分配一个有限的帐户:使用操作系统的权限管理机制来限制

(2)为程序提供有限的操作环境:这是沙箱机制

2.什么是沙箱机制?

如上所述,沙箱是一种限制应用程序访问系统资源的操作环境。

在许多情况下,沙箱在虚拟机(VM)中实现,例如Java虚拟机JVM,Javascript虚拟机V8引擎,Android虚拟机Da高仿lvik/ART和以太坊虚拟机EVM。具体实现方法不同。本文重点介绍JVM和EVM沙箱机制的实现。

3.JVM沙箱机制

JVM的沙箱机制大致可分为三层:

746ae8f4497ada8856a706d6460d87b9.png

第一层:类加载器

使用父代委托模型,当低级类加载器收到类加载请求时,需要将其委托给高级类加载器区域来完成。只有当高级类加载器无法完成请求时,才会将其重新委托给较低级的类加载器。 。此机制可确保系统的核心类不被篡改,并且恶意代码无法访问关键资源。

f3f5d6b5d29fbf410ff45816a22b157c.png

第二层:字节码检查器

加载类字节码后,需要在字节码级别检查,包括以下内容:

(1)变量应在使用前初始化

(2)方法调用必须与

之前的对象引用类型匹配

(3)不违反访问私人数据和方法的规则

(4)对局部变量的访问属于运行时堆栈

(5)运行时堆栈不会通过此机制溢出,这可确保字节码符合Java语言规范,并避免访问无效访问或越界访问。

第三层:安全管理员

该层由应用程序开发人员维护,开发人员可以根据自己的需要开发相应的安全策略。默认安全策略配置位于以下两个配置文件中:

·$ JAVA_HOME/conf/security/java.security

·$ JAVA_HOME/conf/security/java.policy

默认情况下,未启用安全管理器。您可以通过在命令行中添加参数来添加它:

Java -Djava.security.manager SandboxTest

默认安全策略配置不允许应用程序读取和写入文件,因此如果您尝试编写文件,运行时将报告以下错误:

986076d2168a91c0f8cab9e359625904.png

如果要打开此权限,可以编写自己的安全策略文件,例如,我们编写my.policy:

0aded5324f2d3989d65286f0e10cc7df.png

然后在运行时指定此策略配置:

Java -Djava.security.manager -Djava.security.policy=。/my.policy SandboxTest

应用程序开发人员可以针对不同的应用程序场景自定义应用程序,并控制程序对网络,文件,属性和其他内容的访问权限。

4.EVM沙箱机制

EVM本身是一个相对封闭的环境,不支持直接访问网络和文件系统。从这个层面来看,它已经发挥了沙箱功能的一部分:

b6997c88601651cb2a5682d2c3b48d3d.png

此外,在智能合约之间调用时,EVM重新分配堆栈和内存空间,在全新环境中运行新合同,即使出现问题,也不会破坏原始执行环境,从而提供执行的智能合约。沙箱环境。

3ca7dd71b99b9dea869c1f55124f7de0.png

最后,每个智能合约的存储也是相互独立的。开发人员可以根据需要限制合同可以访问的存储空间,并避免未经授权的访问或修改。例如,下图描述了存储空间访问的CALL和CALLCODE指令之间的区别:

824fa173bbc534dd73aa0b4c3dc4a09a.png

来源:公共号码(DoraFans)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值