• 沙箱机制的理解


    目录

    前言:为什么要用沙箱?能解决什么样的问题?

    使用场景:

    Docker的沙箱


     

    前言:为什么要用沙箱?能解决什么样的问题?

    场景:比如我们有一个应用程序可以访问机器上的所有资源:比如CPU,内存等等,但是这样肯定是不安全的,如果随意操作资源就可能破坏资源的使用,使其他使用资源的应用程序受到影响

    解决:

    1.为程序分配一个权限账号,操作系统的权限管理机制进行限制

    2.为程序提供一个受限的环境:沙箱机制

    所以说,什么是沙箱机制?

    沙箱机制就是限定一个应用程序访问资源的运行环境

    使用场景:

    在这里插入图片描述

    1.比如JVM,大致分为三层:

    1.类加载器,利用双亲委派机制,先委派给高层类进行加载,当高层无法应付时交给下面的加载器(保证了系统的核心类不会被篡改,恶意代码无法访问关键资源)在这里插入图片描述

     2.在类加载的链接时期中准备时期,中间有个字节码验证阶段,对字节码进行校验

    (1) 变量要在使用之前进行初始化
    (2) 方法调用与对象引用类型之前要匹配
    (3) 访问私有数据和方法的规则没有被违背
    (4) 对本地变量的访问落在运行时堆栈内
    (5) 运行时堆栈没有溢出通过这一机制,可以确保字节码符合Java语言规范,避免访问无效访问或越界访问。

     3.我们的开发者也具有设置安全策略的权限,开发者可以根据自身需求,制定对应的安全策略。默认的安全策略配置位于以下两个配置文件中:

    · $JAVA_HOME/conf/security/java.security
    · $JAVA_HOME/conf/security/java.policy

    在这里插入图片描述

     默认的安全策略配置不允许应用程序对文件的读写操作,所以如果你试图写一个文件,运行时会报如下错误:
    如果你希望开放这个权限,可以编写自己的安全策略文件,比如我们写一个my.policy:

    在这里插入图片描述

     然后在运行时指定这个策略配置就可以了:
    java -Djava.security.manager -Djava.security.policy=。/my.policy SandboxTest

    Docker的沙箱

    1.本质利用DockerFile,对应用组件进行组装=From基础环境+一些依赖,包+入口,运行命令

    2.搭建测试环境。沙箱的应用只能访问自己的应用访问目录,而不能应用之间的资源进行共享,这样就形成了一个相对安全的机制,由于沙箱具有非常良好的独立性、隔离性,所以能够搭建一些具有高风险的软件进行测试。

     

  • 相关阅读:
    ChatGPT绘图指南:DALL.E3玩法大全(一)
    粘包和半包问题及解决办法
    C++函数重载详解
    C语言-位运算
    开源相机管理库Aravis例程学习(五)——camera-api
    MYSQL语句
    Zookeeper集群 + Kafka集群
    QGis软件 —— 9、QGis - 由点绘制热力图来模拟人流量(绘制点方式、excel导入数据方式)
    算法之跳表
    Strimzi Kafka Bridge(桥接)实战之一:简介和部署
  • 原文地址:https://blog.csdn.net/weixin_57128596/article/details/127400855