java平台沙箱模型,Java - 安全沙箱

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. 允许代码访问指定包中的类

accessDeclaredMembers 允许代码使用反射访问其他类中私有或保护的成员

createClassLoader 允许代码实例化类加载器

createSecurityManager 允许代码实例化安全管理器,它将允许程序化的实现对沙箱的控制

defineClassInPackage. 允许代码在指定包中定义类

exitVM 允许代码关闭整个虚拟机

getClassLoader 允许代码访问类加载器以获得某个特定的类

getProtectionDomain 允许代码访问保护域对象以获得某个特定类

loadlibrary. 允许代码装载指定类库

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

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

java -Djava.security.policy==

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值