当前位置:   article > 正文

java平台沙箱安全组件_java Security--java沙箱

permission java.security.allpermission;

什么是沙箱^1

Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境。限制程序运行一方面是为了保护系统资源,同时另一方面也为了保护程序自己。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。

所有的Java程序运行都可以指定沙箱,可以定制安全策略。而一个Java程序运行的安全策略,包括了以下几点基础:字节码校验器(bytecode verifier):确保Java类文件遵循Java语言规范。这样可以帮助Java程序实现内存保护。但是不是所有的类文件都会经过字节码校验,比如核心类。

类加载器(class loader):所有的Java类都是通过类加载器加载的,可以自定义类加载器来设置加载类的权限。

存取控制器(access controller):存取控制器可以控制核心API对操作系统的存取权限,而这个控制的策略设定,可以由用户指定。

安全管理器(security manager):是核心API和操作系统之间的主要接口。实现权限控制,比存取控制器优先级高。

安全软件包(security package):java.security下的类和扩展包下的类,允许用户为自己的应用增加新的安全特性,包括:安全提供者

消息摘要

数字签名

加密

鉴别

沙箱包含哪些要素

1. 权限

权限是指允许代码执行的操作。包含三部分:权限类型、权限名和允许的操作。权限类型是实现了权限的Java类名,是必需的。权限名一般就是对哪类资源进行操作的资源定位(比如一个文件名或者通配符、网络主机等),一般基于权限类型来设置,有的比如java.security.AllPermission不需要权限名。允许的操作也和权限类型对应,指定了对目标可以执行的操作行为,比如读、写等。如下面的例子: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.util.PropertyPermission需要访问的jvm属性名读、写读标准Java属性:permission java.util.PropertyPermission "java.*", "read";。在sdo包中创建属性:permission java.util.PropertyPermission "sdo.*", "read,write";。

运行时权限java.lang.RuntimePermission多种权限名[见附录A]无允许代码初始化打印任务:permission java.lang.RuntimePermission "queuePrintJob"

AWT权限java.awt.AWTPermission6种权限名[见附录B]无允许代码充分使用robot类:permission java.awt.AWTPermission "createRobot"; permission java.awt.AWTPermission "readDisplayPixels";。

网络权限java.net.NetPermission3种权限名[见附录C]无允许安装流处理器:permission java.net.NetPermission "specifyStreamHandler";。

安全权限java.security.SecurityPermission多种权限名[见附录D]无

序列化权限java.io.SerializablePermission2种权限名[见附录E]无

反射权限java.lang.reflect.ReflectPermissionsuppressAccessChecks(允许利用反射检查任意类的私有变量)无

完全权限java.security.AllPermission无(拥有执行任何操作的权限)无

2. 代码源

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

3. 保护域

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/905682
推荐阅读
相关标签
  

闽ICP备14008679号