• JVM_沙箱安全机制与Java安全模型


    沙箱安全机制

    什么是沙箱

            沙箱是一个限制程序运行的环境

    什么是沙箱机制

            沙箱机制就是将Java代码限定在JVM特定的运行范围中,并严格限制代码对本地系统资源的访问,以此来保证对代码的有效隔离、防止对本地系统造成破坏。不同级别的沙箱对本地系统资源的访问限制不同(CPU、内存、文件系统、网络)

    组成沙箱的基本组件

    1.字节码校验器

            确保字节码文件(.class文件)遵守Java语言规范,实现Java程序的内存保护

            注:并非所有的字节码文件都会经过字节码校验,例如核心类的字节码文件

    2.类加载器

    • 防止恶意代码干涉善意代码
    • 守护了被信任的类库边界
    • 将代码归入不同的受保护域,限制了代码的权限(不同的保护域拥有不同的权限,类拥有所处受保护域的所有权限,一个类只能属于一个受保护域)

    类加载器的机制是双亲委派机制

    3.存取控制器

            控制核心API对操作系统的存取权限(控制策略可由用户设定)

    4.安全管理器

            核心API和操作系统间的主要接口,实现权限控制,优先级高于存取控制器

    5.安全API

           Java提供的安全API

    Java安全模型

    JDK1.0安全模型

            代码分为本地代码和远程代码,本地代码默认可信任,远程代码默认不可信任。受信的本地代码可以访问一切本地资源,非受信的远程代码在早期的Java实现中,安全依赖于沙箱(Sandbox) 机制

            但严格的安全机制给程序的功能扩展带来了阻碍

    JDK1.1安全模型

            针对安全机制进行改进,添加了安全策略,可设定代码对本地资源的访问权限

    JDK1.2安全模型

            再次改进了安全机制,添加了代码签名。不论本地代码与远程代码,均依安全策略,通过类加载器将类加载到JVM中不同权限的命名空间,实现权限控制

    JDK1.6安全模型

            引入了 (Domain) 的概念

            类加载器将所有代码加载到不同的系统域和应用域(统称受保护域)。系统域负责与关键资源进行交互;应用域通过系统域的代理,对需要的资源进行访问。JVM中不同的受保护域 (Protected Domain),对应不同的权限 (Permission)。存在于不同域中的类拥有当前域的所有权限

    所有Java程序都可以指定运行的沙箱,都可以定制安全策略

  • 相关阅读:
    HDMI ——CEC 协议详解以及待机唤醒 实现
    亚马逊API接口解析,实现获得AMAZON商品详情
    kotlin函数
    【excel实战】-- 批量提取批准&多重区域复制粘贴
    盘点 10 个 GitHub 上的前端高仿项目
    算法刷题 week3
    MySQL主从复制
    浅析<router-view> v-slot事例
    做酒类行业应该如何推广自身品牌?
    仿写el-upload组件,彻底搞懂文件上传
  • 原文地址:https://blog.csdn.net/Mudrock__/article/details/126314225