Java相关

Java - 安全沙箱

2020-04-03  本文已影响0人  万福来

Java - 安全沙箱

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

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"

运行时权限名列表

代码源

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

保护域

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

策略文件

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

启用沙箱

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

java -Djava.security.manager <other args>

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

java -Djava.security.policy==<filepath>
上一篇下一篇

猜你喜欢

热点阅读