美文网首页Java相关
Java - 安全沙箱

Java - 安全沙箱

作者: 万福来 | 来源:发表于2020-04-03 17:44 被阅读0次

Java - 安全沙箱

Java沙箱是Java安全模型的核心,沙箱是一个限制程序运行的环境,可以保护系统资源和程序自己。主要目的是限制系统资源访问 -- CPU 内存 文件系统和网络。

Java安全沙箱要素

权限介绍

权限是指允许代码执行的操作。包括三部分:权限类型、权限名和允许的操作。

  • 权限类型:实现了权限的Java类名;
  • 权限名:一般就是对哪类资源进行操作的资源定位,一般基于权限类型设置;
  • 操作:就是权限允许的操作类型,也和权限类型对应,比如读写权限。
permission java.security.AllPermission;    //权限类型
permission java.lang.RuntimePermission "stopThread";    //权限类型+权限名
permission java.io.FilePermission "/tmp/foo" "read";    //权限类型+权限名+允许的操作

主要标准权限

类型 权限名 操作 示例
文件权限 java.io.FilePermission 文件名 读、写、删除、执行 允许所有文件的读写删除执行:permission java.io.FilePermission "<< ALL FILES>>", "read,write,delete,execute";允许对用户主目录的读:permission java.io.FilePermission "${user.home}/-", "read"。
套接字权限 java.net.SocketPermission 主机名:端口 接收监听连接解析 允许实现所有套接字操作:permission java.net.SocketPermission ":1-","accept,listen,connect,resolve";允许建立到特定网站的连接:permission java.net.SocketPermission ".abc.com:1-", "connect,resolve"。
属性权限 java.uitl.PropertyPermission jvm属性名 读写 读标准Java属性:permission java.util.PropertyPermission "java.", "read"。在sdo包中创建属性:permission java.util.PropertyPermission "sdo.", "read,write"。
运行时权限 java.lang.RuntimePermission 参见下表 允许代码初始化打印任务:permission java.lang.RuntimePermission "queuePrintJob"

运行时权限名列表

  • accessClassInPackage.<name> 允许代码访问指定包中的类
  • accessDeclaredMembers 允许代码使用反射访问其他类中私有或保护的成员
  • createClassLoader 允许代码实例化类加载器
  • createSecurityManager 允许代码实例化安全管理器,它将允许程序化的实现对沙箱的控制
  • defineClassInPackage.<name> 允许代码在指定包中定义类
  • exitVM 允许代码关闭整个虚拟机
  • getClassLoader 允许代码访问类加载器以获得某个特定的类
  • getProtectionDomain 允许代码访问保护域对象以获得某个特定类
  • loadlibrary.<name> 允许代码装载指定类库
  • modifyThread 允许代码调整指定的线程参数
  • modifyThreadGroup 允许代码调整指定的线程组参数
  • queuePrintJob 允许代码初始化一个打印任务
  • readFileDescriptor 允许代码读文件描述符(相应的文件是由其他保护域中的代码打开的)
  • setContextClassLoader 允许代码为某线程设置上下文类加载器
  • setFactory 允许代码创建套接字工厂
  • setIO 允许代码重定向System.in、System.out或System.err输入输出流
  • setSecurityManager 允许代码设置安全管理器
  • stopThread 允许代码调用线程类的stop()方法
  • writeFileDescriptor 允许代码写文件描述符

代码源

代码源是类所在的位置,表示为以URL地址。

保护域

保护域用来组合代码源和权限,这是沙箱的基本概念。保护域就在于声明了比如由代码A可以做权限B这样的事情。

策略文件

策略文件是控制沙箱的管理要素,一个策略文件包含一个或多个保护域的项。策略文件完成了代码权限的指定任务,策略文件包括全局和用户专属两种。
全局策略文件:$JREHOME/lib/security/java.policy 作用于JVM的所有实例

启用沙箱

通过java命令行启动的java应用程序,默认是不启用沙箱,要想启用默认沙箱,需要增加启动命令:

java -Djava.security.manager <other args>

还可以指定沙箱策略文件,= 表示增加一个策略文件,== 表示只使用这个策略文件;

java -Djava.security.policy==<filepath>

相关文章

  • 沙箱安全机制

    保护程序安全 保护Java原生的JDK代码 Java安全模型的核心就是Java沙箱(sandbox)。什么是沙箱?...

  • Java - 安全沙箱

    Java - 安全沙箱 Java沙箱是Java安全模型的核心,沙箱是一个限制程序运行的环境,可以保护系统资源和程序...

  • Java沙箱机制的实现——安全管理器、访问控制器

    一、Java沙箱机制 Java沙箱(sandbox)是Java安全模型的核心,那如何理解沙箱呢? 我们知道如果默认...

  • java沙箱

    使用在网页上的Java程序称之为applet。 因为applet是从远端服务器上下载并且在本地执行,所以安全成为至...

  • Java安全之SecurityManager

    1 介绍 安全管理器在Java语言中的作用就是检查操作是否有权限执行。是Java沙箱的基础组件。我们一般所说的打开...

  • 安全沙箱/安全屋

    安全屋主要是通过物理方式对数据的所有权和使用权进行分离,通常使用中心化和分布式相结合的混合架构,即各个数据提...

  • iOS逆向 - 沙箱逃脱

    出于安全考虑,也为了让每个App运行在自己的独立空间,iOS引入了名为沙箱(sandbox)的安全体系。沙箱会自动...

  • Android安全沙箱

    沙箱(sandbox)是为执行中的程序提供隔离环境的一种安全机制。它通过严格控制执行的程序所访问的资源,以确保系统...

  • cuckoo简介

    一:沙箱 1.1. 维基百科定义:在软件安全中,沙箱是一个用来分离软件运行的安全机制。它经常用来测试代码,或者来自...

  • 2018-08-01 恶意代码分析

    基本动态分析 基本动态分析——沙箱,沙箱是一种在安全环境下运行并记录样本行为的系统,具有自动化、批量的优点,但也有...

网友评论

    本文标题:Java - 安全沙箱

    本文链接:https://www.haomeiwen.com/subject/elekphtx.html