• 沙箱机制的理解


    目录

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

    使用场景:

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

     

  • 相关阅读:
    力扣:第 304 场周赛
    MySQL进阶
    算法沉淀——动态规划之子数组、子串系列(上)(leetcode真题剖析)
    MYSQL入门与进阶(六)
    验证码(easy-captcha)
    pcd点云格式介绍
    Swift如何使用Vision来识别获取图片中的文字(OCR),通过SwiftUI视图和终端命令行,以及一系列注意事项
    【Linux】进程概念 —— PCB
    linux命令汇总
    Web前端开发与低代码开发——现状分析与未来发展
  • 原文地址:https://blog.csdn.net/weixin_57128596/article/details/127400855