java.lang.Object | +----java.lang.SecurityManager
安全管理器是一个允许应用程序实现安全策略的抽象类。 它允许一个应用程序在执行一个可能不安全或敏感的操作前决定该操作是什么以及是否被一个通过类装入程序创建的类执行而不是被一个本地安装的类执行。通过类装入程序创建的类可能不如本地安装的类更值得信任(特别是已被从网络上下载的类) 。 应用程序可以允许或不允许该操作。
SecurityManager包含许多以 check开头为名字的方法。
这些方法被许多 Java 库中的方法在它们执行特定的潜在敏感的操作前调用。 对这样一个方法的典型调用如下:
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(argument, . . . );
}
安全管理器就抛出异常来阻止操作的完成。如果操作被许可,安全管理器例行程序仅仅返回,但如果操作不被许可,它就抛出一个
SecurityException。该约定的唯一异常是
checkTopLevelWindow,它返回 boolean值。
当前的安全管理器由setSecurityManager方法设置。
System. 当前安全管理器由getSecurityManager 方法获取。
每个checkXXX方法的缺省实现是假设调用者没有执行所请求操作的权限。
true ; 否则为 false 。
SecurityManager 。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
SecurityException。
key 名访问系统属性则抛出一个SecurityException
SecurityException。
SecurityException。
SecurityException。
ServerSocket或
Socket所用的套接字工厂,或者 URL 所用的流句柄工厂则抛出一个 SecurityException。window参数指出的顶层窗口则返回false。SecurityException。
SecurityException。
null。
protected boolean inCheck
true; 否则为
false 。
protected SecurityManager()
SecurityManager。如果已经存在一个当前的安全管理器,则不允许应用程序创建一个新的安全管理器。
public boolean getInCheck()
inCheck域的值。 如果有安全性检查在进行,则这个域为true,否则为false。
protected native Class[] getClassContext()
数组的长度是在执行堆栈中的方法的数目。索引 0 指定的元素是当前执行方法的类,索引 1 指定的元素是那个方法的调用者的类,依次类推。
protected native ClassLoader currentClassLoader()
null。
protected Class currentLoadedClass()
protected native int classDepth(String name)
-1。
protected native int classLoaderDepth()
-1。 protected boolean inClass(String name)
true;否则返回false。 protected boolean inClassLoader()
null。
true。 public Object getSecurityContext()
checkConnect 方法和有两个参数的 checkRead 方法使用。
这些方法是需要的,因为一个被信任的方法可能代替另一方法被调用以读一个文件或打开一个套接字。被信任的方法需要决定另一个方法 ( 可能不被信任 )是否被允许执行对它本身做的操作。
public void checkCreateClassLoader()
SecurityException。
类SecurityManager的checkCreateClassLoader方法总是抛出一个SecurityException。
public void checkAccess(Thread g)
SecurityException。
这个方法由安全管理器的类 Thread 的 stop, suspend, resume, setPriority, setName, setDaemon 方法调用。
类 SecurityManager 的 checkAccess 方法总是抛出一个 SecurityException。
public void checkAccess(ThreadGroup g)
SecurityException。
当一个新的子线程或子线程组创建时,由 ThreadGroup 的
setDaemon, setMaxPriority, stop, suspend,
resume, destroy 方法为当前安全管理器调用该方法。
类 SecurityManager 的 checkAccess 方法总是抛出一个 SecurityException。
public void checkExit(int status)
SecurityException。
这个方法由于安全管理器被类 Runtime 的 exit 方法调用。状态 0 表示成功;其它数值表示多种错误。
类 SecurityManager 的 checkExit 方法总是抛出一个 SecurityException。
public void checkExec(String cmd)
SecurityException。
这个方法由 Runtime 的 exec 方法为安全管理器调用。
类 SecurityManager 的 checkExec 方法总是抛出一个 SecurityException。
public void checkLink(String lib)
SecurityException。参数是一个简单的库名或一个完全的文件名。
这个方法由类 Runtime 的 load 和
loadLibrary 方法为安全管理器调用。
类 SecurityManager 的 checkLink 方法总是抛出一个 SecurityException。
public void checkRead(FileDescriptor fd)
SecurityException。
类 SecurityManager 的 checkRead 方法总是抛出一个 SecurityException。
public void checkRead(String file)
SecurityException。
类 SecurityManager 的 checkRead 方法总是抛出一个 SecurityException。
public void checkRead(String file,
Object context)
SecurityException。 这个上下文必须是以前调用 getSecurityContext 返回的安全上下文。
类 SecurityManager 的 checkRead 方法总是抛出一个 SecurityException。
public void checkWrite(FileDescriptor fd)
SecurityException。
类 SecurityManager 的 checkWrite 方法总是抛出一个 SecurityException。
public void checkWrite(String file)
SecurityException。
类 SecurityManager 的 checkWrite 方法总是抛出一个 SecurityException。
public void checkDelete(String file)
SecurityException。
这个方法由类 File 的 delete 方法为安全管理器调用。
类 SecurityManager 的 checkDelete 方法总是抛出一个 SecurityException。
public void checkConnect(String host,
int port)
SecurityException。
端口号为-1表示调用的方法试图决定指定的主机名的IP 地址。
类 SecurityManager 的 checkConnect 方法总是抛出一个 SecurityException。
host 和
port的套接字连接。
public void checkConnect(String host,
int port,
Object context)
SecurityException。
端口号为 -1 表示调用的方法试图决定指定的主机名的IP 地址。
类 SecurityManager 的 checkConnect 方法总是抛出一个 SecurityException。
host 和 port 的套接字连接。
public void checkListen(int port)
SecurityException。
类 SecurityManager 的 checkListen 方法总是抛出一个 SecurityException。
public void checkAccept(String host,
int port)
SecurityException。
这个方法由类 ServerSocket 的 accept 方法为当前安全管理器调用。
类 SecurityManager 的 checkAccept 方法总是抛出一个 SecurityException。
public void checkMulticast(InetAddress maddr)
public void checkMulticast(InetAddress maddr,
byte ttl)
public void checkPropertiesAccess()
SecurityException。
这个方法由类 System 的 getProperties 和
setProperties 方法来调用。
类 SecurityManager 的 checkPropertiesAccess 方法总是抛出一个 SecurityException。
public void checkPropertyAccess(String key)
key 名字指定的系统特性则抛出 SecurityException。
这个方法由类 System 的 getProperty 方法调用。
类 SecurityManager 的 checkPropertiesAccess 方法总是抛出一个 SecurityException。
public boolean checkTopLevelWindow(Object window)
window 参数指出的顶层窗口则返回 false。
在这种情况下,调用者仍然可以决定显示窗口,但窗口应包括某些可视的警告。如果方法返回 true, 则窗口的显示没有任何限制。
参见类 Window 有关被信任和不被信任的窗口的信息。
类 SecurityManager 的 checkSetFactory 总是返回 false。
true ; 否则返回 false。 public void checkPrintJobAccess()
public void checkSystemClipboardAccess()
public void checkAwtEventQueueAccess()
public void checkPackageAccess(String pkg)
SecurityException。
这个方法由类装入程序的loadClass方法调用。
类 SecurityManager 的 checkPackageAccess 方法总是抛出一个 SecurityException。
public void checkPackageDefinition(String pkg)
SecurityException。
这个方法由某些类装入程序的 loadClass 方法调用。
类 SecurityManager 的 checkPackageDefinition 方法总是抛出一个 SecurityException。
public void checkSetFactory()
ServerSocket,
Socket 使用的套接字工厂,或由 URL 使用的流句柄工厂则抛出一个 SecurityException。
类 SecurityManager 的 checkSetFactory 方法总是抛出一个 SecurityException。
public void checkMemberAccess(Class clazz,
int which)
public void checkSecurityAccess(String action)
public ThreadGroup getThreadGroup()
![]()