当前位置 类层次 (JDK) 所有类(JDK) 所有域与方法 (JDK)

类 java.lang.SecurityManager

java.lang.Object
   |
   +----java.lang.SecurityManager

public abstract class SecurityManager
extends Object
super class of:
RMISecurityManager

安全管理器是一个允许应用程序实现安全策略的抽象类。 它允许一个应用程序在执行一个可能不安全或敏感的操作前决定该操作是什么以及是否被一个通过类装入程序创建的类执行而不是被一个本地安装的类执行。通过类装入程序创建的类可能不如本地安装的类更值得信任(特别是已被从网络上下载的类) 。 应用程序可以允许或不允许该操作。

SecurityManager包含许多以 check开头为名字的方法。 这些方法被许多 Java 库中的方法在它们执行特定的潜在敏感的操作前调用。 对这样一个方法的典型调用如下:

     SecurityManager security = System.getSecurityManager();
     if (security != null) {
         security.checkXXX(argument,  . . . );
     }
 

安全管理器就抛出异常来阻止操作的完成。如果操作被许可,安全管理器例行程序仅仅返回,但如果操作不被许可,它就抛出一个 SecurityException。该约定的唯一异常是 checkTopLevelWindow,它返回 boolean值。

当前的安全管理器由setSecurityManager方法设置。 System. 当前安全管理器由getSecurityManager 方法获取。

每个checkXXX方法的缺省实现是假设调用者没有执行所请求操作的权限。

出现于:
JDK1.0
参见:
ClassLoader, SecurityException, checkTopLevelWindow, getSecurityManager, setSecurityManager

变量索引

inCheck
如果一个安全检查在执行中,该域为true ; 否则为 false

构造子索引

SecurityManager()
构造新的 SecurityManager

方法索引

checkAccept(String, int)
如果不允许调用的线程从指定的主机和端口号接受一个套接字连接则抛出一个SecurityException
checkAccess(Thread)
如果不允许调用的线程修改线程参数则抛出一个 SecurityException
checkAccess(ThreadGroup)
如果不允许调用的线程修改线程组参数则抛出一个 SecurityException
checkAwtEventQueueAccess()
检查客户机是否能访问 AWT 事件队列。
checkConnect(String, int)
如果不允许调用的线程打开与指定的主机和端口号的套接字连接则抛出一个SecurityException
checkConnect(String, int, Object)
如果不允许指定的安全上下文打开与指定的主机和端口号的套接字连接则抛出一个SecurityException
checkCreateClassLoader()
如果不允许调用的线程创建一个新的类装入程序则抛出一个SecurityException
checkDelete(String)
如果不允许调用的线程删除指定的文件则抛出一个 SecurityException
checkExec(String)
如果不允许调用的线程创建一个子进程则抛出一个 SecurityException
checkExit(int)
如果不允许调用的线程使Java虚拟机暂停于指定的状态码则抛出一个SecurityException
checkLink(String)
如果不允许调用的线程动态连接通过字符串参数文件指定的库代码则抛出一个 SecurityException
checkListen(int)
如果不允许调用的线程等待与指定的端口号的连接则抛出一个 SecurityException
checkMemberAccess(Class, int)
如果不允许一个客户访问成员则检查。
checkMulticast(InetAddress)
检查是否允许当前执行上下文使用 (加入/离开/发送/接收) IP 广播。
checkMulticast(InetAddress, byte)
检查是否允许当前执行上下文使用 (加入/离开/发送/接收) IP 广播。
checkPackageAccess(String)
如果不允许调用的线程访问参数指定的包则抛出一个 SecurityException
checkPackageDefinition(String)
如果不允许调用的线程在参数指定的包中定义类则抛出一个 SecurityException
checkPrintJobAccess()
检查某个客户是否可以初始化一个打印作业请求。
checkPropertiesAccess()
如果不允许调用的线程访问或修改系统特性则抛出一个SecurityException
checkPropertyAccess(String)
如果不允许调用的线程用指定的 key 名访问系统属性则抛出一个SecurityException
checkRead(FileDescriptor)
如果不允许调用的线程通过指定的文件描述符读取则抛出一个 SecurityException
checkRead(String)
如果不允许调用的线程读取字符串参数指定的文件则抛出一个 SecurityException
checkRead(String, Object)
如果不允许指定的安全上下文读取字符串参数指定的文件则抛出一个SecurityException
checkSecurityAccess(String)
为一个安全 API 动作测试对某操作的访问。
checkSetFactory()
如果不允许调用的线程设置ServerSocketSocket所用的套接字工厂,或者 URL 所用的流句柄工厂则抛出一个 SecurityException
checkSystemClipboardAccess()
检查客户机是否能访问系统剪裁板。
checkTopLevelWindow(Object)
如果不信任调用的线程调出由window参数指出的顶层窗口则返回false
checkWrite(FileDescriptor)
如果不允许调用的线程写指定的文件描述符则抛出一个 SecurityException
checkWrite(String)
如果不允许调用的线程写通过字符串参数指定的文件描述符则抛出一个SecurityException
classDepth(String)
返回指定类的堆栈深度。
classLoaderDepth()
返回最近执行的类装入程序方法的堆栈深度。
currentClassLoader()
返回一个描述最近在堆栈上执行的类装入程序的对象。
currentLoadedClass()
返回在执行堆栈上有 ClassLoader 的当前 Class。
getClassContext()
以一个类数组的形式返回当前执行堆栈。
getInCheck()
测试是否有一个安全性检查在进行中。
getSecurityContext()
创建一个封装当前执行环境的对象。
getThreadGroup()
返回任何新线程被创建并实例化时它所在的线程组。
inClass(String)
测试指定的字符串是否在这个类中。
inClassLoader()
测试当前 ClassLoader 是否等于 null

变量

inCheck
 protected boolean inCheck
如果一个安全检查执行中,则该域为 true; 否则为 false


构造子

SecurityManager
 protected SecurityManager()
构造一个新的SecurityManager。如果已经存在一个当前的安全管理器,则不允许应用程序创建一个新的安全管理器。

抛出: SecurityException
如果一个安全管理器已存在。
参见:
getSecurityManager

方法

getInCheck
 public boolean getInCheck()
测试是否有一个安全性检查在进行中。

返回:
inCheck域的值。 如果有安全性检查在进行,则这个域为true,否则为false
参见:
inCheck
getClassContext
 protected native Class[] getClassContext()
以一个类数组的形式返回当前执行堆栈。

数组的长度是在执行堆栈中的方法的数目。索引 0 指定的元素是当前执行方法的类,索引 1 指定的元素是那个方法的调用者的类,依次类推。

返回:
执行堆栈。
currentClassLoader
 protected native ClassLoader currentClassLoader()
返回一个描述最近在堆栈上执行的类装入程序的对象。

返回:
使用类装入程序定义的类的方法堆栈中最近出现的类装入程序;如果没有出现返回 null
currentLoadedClass
 protected Class currentLoadedClass()
返回在执行堆栈上有类装入程序的当前类。

classDepth
 protected native int classDepth(String name)
返回指定类的堆栈深度。

参数:
name - 期望类的全路径名。
返回:
指定名称类方法的第一次出现的堆栈帧的深度;如果找不到这样的帧,则返回 -1
classLoaderDepth
 protected native int classLoaderDepth()
返回使用类装入程序定义的类的最近执行的方法的堆栈深度。

返回:
使用类装入程序定义的类最近出现的方法的堆栈帧的深度;如果没有出现返回-1
inClass
 protected boolean inClass(String name)
测试指定的字符串是否在这个类中。

参数:
name - 类的全名。
返回:
如果指定名称的类方法在执行堆栈中则返回true;否则返回false
inClassLoader
 protected boolean inClassLoader()
测试当前类装入程序是否等于 null

返回:
如果使用类装入程序定义的类的方法在执行堆栈中则返回 true
getSecurityContext
 public Object getSecurityContext()
创建一个封装当前执行环境的对象。 这个方法的结果由有三个参数的 checkConnect 方法和有两个参数的 checkRead 方法使用。

这些方法是需要的,因为一个被信任的方法可能代替另一方法被调用以读一个文件或打开一个套接字。被信任的方法需要决定另一个方法 ( 可能不被信任 )是否被允许执行对它本身做的操作。

返回:
一个依赖于实现的对象,该对象封装了有关当前执行环境的足够信息,用来在晚些时侯进行一些安全性检查。
参见:
checkConnect, checkRead
checkCreateClassLoader
 public void checkCreateClassLoader()
如果不允许调用的线程创建一个新的类装入程序则抛出一个 SecurityException

SecurityManagercheckCreateClassLoader方法总是抛出一个SecurityException

抛出: SecurityException
如果不允许调用者创建一个新的类装载器。
参见:
ClassLoader
checkAccess
 public void checkAccess(Thread g)
如果不允许调用的线程修改线程参数则抛出一个 SecurityException

这个方法由安全管理器的类 Threadstop, suspend, resume, setPriority, setName, setDaemon 方法调用。

SecurityManagercheckAccess 方法总是抛出一个 SecurityException

参数:
g - 检查的线程。
抛出: SecurityException
如果调用者没有权限修改线程。
参见:
getSecurityManager, resume, setDaemon, setName, setPriority, stop, suspend
checkAccess
 public void checkAccess(ThreadGroup g)
如果不允许调用的线程修改线程组参数则抛出一个 SecurityException

当一个新的子线程或子线程组创建时,由 ThreadGroupsetDaemon, setMaxPriority, stop, suspend, resume, destroy 方法为当前安全管理器调用该方法。

SecurityManagercheckAccess 方法总是抛出一个 SecurityException

参数:
g - 检查的线程组。
抛出: SecurityException
如果不允许调用者修改线程组。
参见:
getSecurityManager, destroy, resume, setDaemon, setMaxPriority, stop, suspend
checkExit
 public void checkExit(int status)
如果不允许调用的线程使 Java 虚拟机暂停于指定的状态码则抛出一个 SecurityException

这个方法由于安全管理器被类 Runtimeexit 方法调用。状态 0 表示成功;其它数值表示多种错误。

SecurityManagercheckExit 方法总是抛出一个 SecurityException

参数:
status - 退出状态。
抛出: SecurityException
如果不允许调用者使 Java 虚拟机在指定的状态暂停。
参见:
exit, getSecurityManager
checkExec
 public void checkExec(String cmd)
如果不允许调用的线程创建一个子进程则抛出一个 SecurityException

这个方法由 Runtimeexec 方法为安全管理器调用。

SecurityManagercheckExec 方法总是抛出一个 SecurityException

参数:
cmd - 指定的系统命令。
抛出: SecurityException
如果不允许调用者创建子进程。
参见:
exec, exec, exec, exec, getSecurityManager
checkLink
 public void checkLink(String lib)
如果不允许调用的线程动态连接由字符串参数文件指定的库代码则抛出一个 SecurityException。参数是一个简单的库名或一个完全的文件名。

这个方法由类 RuntimeloadloadLibrary 方法为安全管理器调用。

SecurityManagercheckLink 方法总是抛出一个 SecurityException

参数:
lib - 库名。
抛出: SecurityException
如果不允许调用者动态连接该库。
参见:
load, loadLibrary, getSecurityManager
checkRead
 public void checkRead(FileDescriptor fd)
如果不允许调用的线程从指定的文件描述符读取则抛出一个 SecurityException

SecurityManagercheckRead 方法总是抛出一个 SecurityException

参数:
fd - 与系统有关的文件描述符。
抛出: SecurityException
如果不允许调用者存取指定的文件描述符。
参见:
FileDescriptor
checkRead
 public void checkRead(String file)
如果不允许调用的线程读取由字符串参数指定的文件则抛出一个 SecurityException

SecurityManagercheckRead 方法总是抛出一个 SecurityException

参数:
file - 与系统有关的文件名。
抛出: SecurityException
如果不允许调用者存取指定的文件。
checkRead
 public void checkRead(String file,
                          Object context)
如果不允许指定的安全上下文读取由字符串参数指定的文件则抛出一个 SecurityException。 这个上下文必须是以前调用 getSecurityContext 返回的安全上下文。

SecurityManagercheckRead 方法总是抛出一个 SecurityException

参数:
file - 依赖于系统的文件名。
context - 依赖于系统的安全上下文。
抛出: SecurityException
如果不允许指定的安全上下文读取指定的文件。
参见:
getSecurityContext
checkWrite
 public void checkWrite(FileDescriptor fd)
如果不允许调用的线程写指定的文件描述符读取则抛出一个 SecurityException

SecurityManagercheckWrite 方法总是抛出一个 SecurityException

参数:
fd - 与系统有关的文件描述符。
抛出: SecurityException
如果不允许调用者存取指定的文件描述符。
参见:
FileDescriptor
checkWrite
 public void checkWrite(String file)
如果不允许调用的线程写字符串参数指定的文件描述符则抛出一个 SecurityException

SecurityManagercheckWrite 方法总是抛出一个 SecurityException

参数:
file - 依赖于系统的文件名。
抛出: SecurityException
如果不允许调用者存取指定的文件。
checkDelete
 public void checkDelete(String file)
如果不允许调用的线程删除指定的文件则抛出一个 SecurityException

这个方法由类 Filedelete 方法为安全管理器调用。

SecurityManagercheckDelete 方法总是抛出一个 SecurityException

参数:
file - 依赖于系统的文件名。
抛出: SecurityException
如果不允许调用者删除文件。
参见:
delete, getSecurityManager
checkConnect
 public void checkConnect(String host,
                                       int port)
如果不允许调用的线程打开与指定的主机和端口号的套接字连接则抛出一个 SecurityException

端口号为-1表示调用的方法试图决定指定的主机名的IP 地址。

SecurityManagercheckConnect 方法总是抛出一个 SecurityException

参数:
host - 连接的主机名 。
port - 连接的协议端口
抛出: SecurityException
如果不允许调用者打开一个与指定 hostport的套接字连接。
checkConnect
 public void checkConnect(String host,
               int port,
                          Object context)
如果不允许指定的安全上下文打开与指定的主机和端口号的套接字连接则抛出一个 SecurityException

端口号为 -1 表示调用的方法试图决定指定的主机名的IP 地址。

SecurityManagercheckConnect 方法总是抛出一个 SecurityException

参数:
host - 连接的主机名 。
port - 连接的协议端口
context - 依赖于系统的安全上下文。
抛出: SecurityException
如果不允许指定的安全上下文打开一个与指定 hostport 的套接字连接。
参见:
getSecurityContext
checkListen
 public void checkListen(int port)
如果不允许调用的线程等待与指定的端口号的连接请求则抛出一个 SecurityException

SecurityManagercheckListen 方法总是抛出一个 SecurityException

参数:
port - 本地的端口
抛出: SecurityException
如果不允许调用者监听指定的端口。
checkAccept
 public void checkAccept(String host,
                                       int port)
如果不允许调用的线程从指定的主机和端口号接受一个套接字连接则抛出一个 SecurityException

这个方法由类 ServerSocketaccept 方法为当前安全管理器调用。

SecurityManagercheckAccept 方法总是抛出一个 SecurityException

参数:
host - 套接字连接的主机名 。
port - 套接字连接的端口号码 。
抛出: SecurityException
如果不允许调用者接受连接。
参见:
getSecurityManager, accept
checkMulticast
 public void checkMulticast(InetAddress maddr)
检查是否允许当前执行上下文使用 (加入/离开/发送/接收) IP 广播。

参数:
multicast - 要使用的 Internet 组地址。
抛出: SecurityException
如果发生一个安全性错误。
checkMulticast
 public void checkMulticast(InetAddress maddr,
                            byte ttl)
检查是否允许当前执行上下文使用 (加入/离开/发送/接收) IP 广播。

参数:
multicast - 要使用的 Internet 组地址。
ttl - 使用的值, 如果是多址发送传输。
抛出: SecurityException
如果发生一个安全性错误。
checkPropertiesAccess
 public void checkPropertiesAccess()
如果不允许调用的线程访问或修改系统特性则抛出一个 SecurityException

这个方法由类 SystemgetPropertiessetProperties 方法来调用。

SecurityManagercheckPropertiesAccess 方法总是抛出一个 SecurityException

抛出: SecurityException
如果不允许调用者存取或修改系统特性。
参见:
getProperties, setProperties
checkPropertyAccess
 public void checkPropertyAccess(String key)
如果不允许调用的线程存取用 key 名字指定的系统特性则抛出 SecurityException

这个方法由类 SystemgetProperty 方法调用。

SecurityManagercheckPropertiesAccess 方法总是抛出一个 SecurityException

参数:
key - 一个系统特性关键字。
抛出: SecurityException
如果调用者不被允许存取指定的系统特性。
参见:
getProperty
checkTopLevelWindow
 public boolean checkTopLevelWindow(Object window)
如果不信任调用的线程调出由 window 参数指出的顶层窗口则返回 false。 在这种情况下,调用者仍然可以决定显示窗口,但窗口应包括某些可视的警告。如果方法返回 true, 则窗口的显示没有任何限制。

参见类 Window 有关被信任和不被信任的窗口的信息。

SecurityManagercheckSetFactory 总是返回 false

参数:
window - 创建的新窗口。
返回:
如果信任调用者弹出顶层窗口则返回 true ; 否则返回 false
抛出: SecurityException
如果完全不允许创建。
参见:
Window
checkPrintJobAccess
 public void checkPrintJobAccess()
测试一个客户是否可以初始化一个打印作业请求。

checkSystemClipboardAccess
 public void checkSystemClipboardAccess()
测试一个客户能否存取系统剪裁板。

checkAwtEventQueueAccess
 public void checkAwtEventQueueAccess()
检查客户机是否能访问 AWT 事件队列。

checkPackageAccess
 public void checkPackageAccess(String pkg)
如果不允许调用的线程访问由参数指定的包则抛出一个 SecurityException

这个方法由类装入程序的loadClass方法调用。

SecurityManagercheckPackageAccess 方法总是抛出一个 SecurityException

参数:
pkg - 包名称。
抛出: SecurityException
如果不允许调用者存取指定的包。
参见:
loadClass
checkPackageDefinition
 public void checkPackageDefinition(String pkg)
如果不允许调用的线程在参数指定的包中定义类则抛出一个 SecurityException

这个方法由某些类装入程序的 loadClass 方法调用。

SecurityManagercheckPackageDefinition 方法总是抛出一个 SecurityException

参数:
pkg - 包名称。
抛出: SecurityException
如果不允许调用者在指定的包中定义类。
参见:
loadClass
checkSetFactory
 public void checkSetFactory()
如果不允许调用的线程设置由 ServerSocketSocket 使用的套接字工厂,或由 URL 使用的流句柄工厂则抛出一个 SecurityException

SecurityManagercheckSetFactory 方法总是抛出一个 SecurityException

抛出: SecurityException
如果不允许调用者指定套接字工厂或流句柄工厂。
参见:
setSocketFactory, setSocketImplFactory, setURLStreamHandlerFactory
checkMemberAccess
 public void checkMemberAccess(Class clazz,
                               int which)
测试是否允许一个客户访问成员。如果拒绝访问,抛出一个 SecurityException。 缺省策略是拒绝所有访问。

checkSecurityAccess
 public void checkSecurityAccess(String action)
为一个安全 API 动作测试对某操作的访问。

getThreadGroup
 public ThreadGroup getThreadGroup()
返回所有新线程被创建和实例化时所在的线程组。 缺省情况下,返回当前线程所在的线程组。特定的安全管理器可以决定返回适当的线程组。


当前位置 类层次(JDK) 所有类(JDK) 所有域和方法 (JDK)