|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.lang.SecurityManager
public class SecurityManager
安全管理器是一個允許應用程序實作安全策略的類別。它允許應用程序在執行一個可能不安全或敏感的操作前確定該操作是什麼,以及是否是在允許執行該操作的安全上下文中執行它。應用程序可以允許或不允許該操作。
SecurityManager
類別包含了很多名稱以單詞 check
開頭的方法。Java 資源庫中的各種方法在執行某些潛在的敏感操作前可以調用這些方法。對 check
方法的典型調用如下:
SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkXXX(argument, . . . ); }
因此,安全管理器通過拋出異常來提供阻止操作完成的機會。如果允許執行該操作,則安全管理器例程只是簡單地返回,但如果不允許執行該操作,則拋出一個 SecurityException
。該約定的唯一例外是 checkTopLevelWindow
,它返回 boolean
值。
當前的安全管理器由 System
類別中的 setSecurityManager
方法設置。當前的安全管理器由 getSecurityManager
方法獲得。
特殊方法 checkPermission(java.security.Permission)
確定是應該允許還是拒絕由指定權限所指示的存取請求。預設的實作調用
AccessController.checkPermission(perm);
如果允許存取請求,則安靜地返回 checkPermission
。如果拒絕存取請求,則拋出 SecurityException
。
從 Java 2 SDK v1.2 開始,SecurityManager
中其他所有 check
方法的預設實作都是調用 SecurityManager checkPermission
方法來確定調用執行緒是否具有執行所請求操作的權限。
注意,只帶有單個權限參數的 checkPermission
方法總是在當前執行的執行緒上下文中執行安全檢查。有時,應該在給定上下文中進行的安全檢查實際上需要在不同 的上下文(例如,在一個輔助執行緒中)中進行。Java 為這種情況提供了包含有上下文參數的 getSecurityContext
方法和 checkPermission
方法。getSecurityContext
方法返回當前調用上下文的一個“快照”(預設的實作返回一個 AccessControlContext 物件)。下面是一個範例調用:
Object context = null; SecurityManager sm = System.getSecurityManager(); if (sm != null) context = sm.getSecurityContext();
checkPermission
方法使用一個上下文物件,以及根據該上下文而不是當前執行執行緒的上下文作出存取決策的權限。因此另一個上下文中的程式碼可以調用此方法,傳遞權限和以前保存的上下文物件。下面是一個範例調用,它使用了以前範例中獲得的 SecurityManager sm
:
if (sm != null) sm.checkPermission(permission, context);
權限分為以下類別別:檔案、Socket、網路、安全性、運行時、屬性、AWT、反射和可序列化。管理各種權限類別別的類別是 java.io.FilePermission
、java.net.SocketPermission
、java.net.NetPermission
、java.security.SecurityPermission
、java.lang.RuntimePermission
、java.util.PropertyPermission
、java.awt.AWTPermission
、java.lang.reflect.ReflectPermission
和 java.io.SerializablePermission
。
除前兩個(FilePermission 和 SocketPermission)類別以外的全部類別都是 java.security.BasicPermission
的子類別,而 java.security.BasicPermission
類別又是頂級權限類別 java.security.Permission
的抽象子類別。BasicPermission 定義了所有權限所需的功能,這些功能的名稱遵從分層屬性命名慣例(例如“exitVM”、“setFactory”、“queuePrintJob”等等)。在名稱的末尾可能出現一個星號,前面是“.”或星號,這表示通配符比對。例如:“a.*”、“*”是有效的,而“*a”或“a*b”是無效的。
FilePermission 和 SocketPermission 是頂級權限類別 (java.security.Permission
) 的子類別。像這些命名語法比 BasicPermission 所用的語法更為複雜的類別都直接是 Permission 的子類別,而不是 BasicPermission 的子類別。例如,對於 java.io.FilePermission
物件而言,權限名就是檔案(或目錄)的路徑名。
某些權限類別具有一個“動作”列表,告知允許物件所執行的動作。例如,對於 java.io.FilePermission
物件,動作列表(如“讀、寫”)指定了允許對指定檔案(或指定目錄中的檔案)執行哪些動作。
其他權限類別是“指定的”權限 - 有名稱但沒有動作列表的類別;您也許有指定的權限,也許沒有。
註:還有一個暗指所有權限的 java.security.AllPermission
權限。該權限是為了簡化系統管理員的工作而存在的,因為管理員可能需要執行很多需要所有(或許多)權限的任務。
有關權限相關的資訊,請參閱 。例如,本文檔包括一個列出各種 SecurityManager 的
有關 JDK 中對
check
方法和每個方法的預設實作所需的權限表。它還包含了版本 1.2 方法所需權限和每個方法需要哪些權限的表。
SecurityManager
所作更改的更多資訊和關於 1.1 樣式安全管理器移植的建議,請參閱 security documentation。
ClassLoader
,
SecurityException
,
checkTopLevelWindow
,
getSecurityManager
,
setSecurityManager
,
AccessController
,
AccessControlContext
,
AccessControlException
,
Permission
,
BasicPermission
,
FilePermission
,
SocketPermission
,
PropertyPermission
,
RuntimePermission
,
AWTPermission
,
Policy
,
SecurityPermission
,
ProtectionDomain
欄位摘要 | |
---|---|
protected boolean |
inCheck
已過時。 建議不使用該型別的安全檢查。建議使用 checkPermission 調用。 |
建構子摘要 | |
---|---|
SecurityManager()
建構一個新的 SecurityManager 。 |
方法摘要 | |
---|---|
void |
checkAccept(String host,
int port)
如果不允許調用執行緒從指定的主機和埠號號接受Socket連接,則拋出 SecurityException 。 |
void |
checkAccess(Thread t)
如果不允許調用執行緒修改 thread 參數,則拋出 SecurityException 。 |
void |
checkAccess(ThreadGroup g)
如果不允許調用執行緒修改執行緒組參數,則拋出 SecurityException 。 |
void |
checkAwtEventQueueAccess()
如果不允許調用執行緒存取 AWT 事件佇列,則拋出 SecurityException 。 |
void |
checkConnect(String host,
int port)
如果不允許調用執行緒打開到指定主機和埠號號的Socket連接,則拋出 SecurityException 。 |
void |
checkConnect(String host,
int port,
Object context)
如果不允許指定的安全上下文打開與指定主機和埠號號的Socket連接,則拋出 SecurityException 。 |
void |
checkCreateClassLoader()
如果不允許調用執行緒創建新的類別載入器,則拋出 SecurityException 。 |
void |
checkDelete(String file)
如果不允許調用執行緒刪除指定的檔案,則拋出 SecurityException 。 |
void |
checkExec(String cmd)
如果不允許調用執行緒創建一個子進程,則拋出 SecurityException 。 |
void |
checkExit(int status)
如果不允許調用執行緒使用特定的狀態碼暫停 Java 虛擬機器,則拋出 SecurityException 。 |
void |
checkLink(String lib)
如果不允許調用執行緒動態連接由字元串參數檔案指定的資源庫程式碼,則拋出 SecurityException 。 |
void |
checkListen(int port)
如果不允許調用執行緒等待與指定本地埠號號進行連接的請求,則拋出 SecurityException 。 |
void |
checkMemberAccess(Class<?> clazz,
int which)
如果不允許調用執行緒存取程序,則拋出 SecurityException 。 |
void |
checkMulticast(InetAddress maddr)
如果不允許調用執行緒使用(加入/離開/發送/接收)IP 多址廣播,則拋出 SecurityException 。 |
void |
checkMulticast(InetAddress maddr,
byte ttl)
已過時。 由 #checkPermission(java.security.Permission) 取代 |
void |
checkPackageAccess(String pkg)
如果不允許調用執行緒存取由參數指定的套件,則拋出 SecurityException 。 |
void |
checkPackageDefinition(String pkg)
如果不允許調用執行緒在參數指定的套件中定義類別,則拋出 SecurityException 。 |
void |
checkPermission(Permission perm)
如果基於當前有效的安全策略,不允許執行根據給定權限所指定的請求存取,則拋出 SecurityException 。 |
void |
checkPermission(Permission perm,
Object context)
如果拒絕指定的安全上下文存取由給定權限所指定的資源,則拋出 SecurityException 。 |
void |
checkPrintJobAccess()
如果不允許調用執行緒發起一個列印作業請求,則拋出 SecurityException 。 |
void |
checkPropertiesAccess()
如果不允許調用執行緒存取或修改系統屬性,則拋出 SecurityException 。 |
void |
checkPropertyAccess(String key)
如果不允許調用執行緒存取具有指定的 key 名的系統屬性,則拋出 SecurityException 。 |
void |
checkRead(FileDescriptor fd)
如果不允許調用執行緒從指定的檔案描述符進行讀取,則拋出 SecurityException 。 |
void |
checkRead(String file)
如果不允許調用執行緒讀取由字元串參數指定的檔案,則拋出 SecurityException 。 |
void |
checkRead(String file,
Object context)
如果不允許指定的安全上下文讀取由字元串參數所指定的檔案,則拋出 SecurityException 。 |
void |
checkSecurityAccess(String target)
確定是應該允許還是拒絕具有指定權限目標名的權限。 |
void |
checkSetFactory()
如果不允許調用執行緒設置由 ServerSocket 或 Socket 使用的Socket處理器,或者由 URL 使用的串流處理程序處理器,則拋出 SecurityException 。 |
void |
checkSystemClipboardAccess()
如果不允許調用執行緒存取系統剪貼板,則拋出 SecurityException 。 |
boolean |
checkTopLevelWindow(Object window)
如果不受信任的調用執行緒調出由 window 參數指出的頂層視窗,則返回 false 。 |
void |
checkWrite(FileDescriptor fd)
如果不允許調用執行緒寫入指定的檔案描述符,則拋出 SecurityException 。 |
void |
checkWrite(String file)
如果不允許調用執行緒寫由字元串參數指定的檔案,則拋出 SecurityException 。 |
protected int |
classDepth(String name)
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
protected int |
classLoaderDepth()
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
protected ClassLoader |
currentClassLoader()
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
protected Class<?> |
currentLoadedClass()
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
protected Class[] |
getClassContext()
以類別陣列的形式返回當前執行堆疊(stack)空間。 |
boolean |
getInCheck()
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
Object |
getSecurityContext()
創建一個封裝當前執行環境的物件。 |
ThreadGroup |
getThreadGroup()
調用此方法時,返回所有新創建的執行緒實例化後所在的執行緒組。 |
protected boolean |
inClass(String name)
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
protected boolean |
inClassLoader()
已過時。 建議不使用該類別安全檢查。建議使用 checkPermission 調用。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
@Deprecated protected boolean inCheck
checkPermission
調用。true
;否則為 false
。
建構子詳細資訊 |
---|
public SecurityManager()
SecurityManager
。
如果已經安裝了一個安全管理器,則此方法首先用 RuntimePermission("createSecurityManager")
權限調用此安全管理器的 checkPermission
方法,確保調用執行緒具有創建新安全管理器的權限。這可能導致拋出 SecurityException
。
SecurityException
- 如果安全管理器已存在,並且其 checkPermission
方法不允許創建新安全管理器。System.getSecurityManager()
,
checkPermission
,
RuntimePermission
方法詳細資訊 |
---|
@Deprecated public boolean getInCheck()
checkPermission
調用。
inCheck
欄位的值。如果安全檢查正在進行,則該欄位應該為 true
,否則應該為 false
。inCheck
protected Class[] getClassContext()
陣列的長度是執行堆疊(stack)空間中的方法數。索引 0
指定的元素是當前執行方法的類別,索引 1
指定的元素是該方法調用方的類別,依此類別推。
@Deprecated protected ClassLoader currentClassLoader()
checkPermission
調用。
ClassLoader.getSystemClassLoader()
返回)或其祖先之一的類別載入器。
在以下三種情況中,此方法將返回 null
:
AccessController.doPrivileged(java.security.PrivilegedAction)
)為止的所有方法都來自於使用系統類別載入器或其祖先之一所定義的類別。
java.security.AllPermission
調用 checkPermission
不會導致 SecurityException。
getSystemClassLoader
,
checkPermission
@Deprecated protected Class<?> currentLoadedClass()
checkPermission
調用。
ClassLoader.getSystemClassLoader()
返回)或其祖先之一的類別載入器。
在以下三種情況中,此方法將返回 null
:
AccessController.doPrivileged(java.security.PrivilegedAction)
)為止的所有方法都來自於使用系統類別載入器或其祖先之一所定義的類別。
java.security.AllPermission
調用 checkPermission
不會導致 SecurityException。
getSystemClassLoader
,
checkPermission
@Deprecated protected int classDepth(String name)
checkPermission
調用。
name
- 要尋找的類別的完全限定名。
-1
。@Deprecated protected int classLoaderDepth()
checkPermission
調用。
ClassLoader.getSystemClassLoader()
返回)或其祖先之一的類別載入器。
在以下三種情況中,此方法將返回 -1:
AccessController.doPrivileged(java.security.PrivilegedAction)
)為止的所有方法都來自於使用系統類別載入器或其祖先之一所定義的類別。
java.security.AllPermission
調用 checkPermission
不會導致 SecurityException。
getSystemClassLoader
,
checkPermission
@Deprecated protected boolean inClass(String name)
checkPermission
調用。
name
- 該類別的完全限定名。
true
;否則返回 false
。@Deprecated protected boolean inClassLoader()
checkPermission
調用。
currentClassLoader
具有非 null 的返回值,則返回 true
。currentClassLoader
public Object getSecurityContext()
checkConnect
方法和帶有兩參數的 checkRead
方法使用。這些方法是必需的,因為一個受信任的方法可能代表另一方法被調用,以讀取一個檔案或打開一個Socket。受信任的方法需要確定是否允許另一個方法(可能不受信任)獨自執行該操作。
此方法的預設實作是返回 AccessControlContext
物件。
checkConnect
,
checkRead
,
AccessControlContext
public void checkPermission(Permission perm)
SecurityException
。
此方法使用給定的權限調用 AccessController.checkPermission
。
perm
- 請求的權限。
SecurityException
- 如果根據當前的安全策略不允許進行存取。
NullPointerException
- 如果 permission 參數為 null
。public void checkPermission(Permission perm, Object context)
SecurityException
。該上下文必須是一個通過以前調用 getSecurityContext
所返回的安全上下文,並且應該根據為該安全上下文所配置的安全策略來作出存取控制決策。
如果 context
是 AccessControlContext
的一個實例,則用指定的權限調用 AccessControlContext.checkPermission
方法。
如果 context
不是 AccessControlContext
的一個實例,則拋出 SecurityException
。
perm
- 指定的權限。context
- 一個取決於系統的安全上下文。
SecurityException
- 如果指定的安全上下文不是 AccessControlContext
的一個實例(如為 null
),或者存取由給定權限所指定的資源時被拒絕。
NullPointerException
- 如果權限參數為 null
。getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
public void checkCreateClassLoader()
SecurityException
。
此方法用 RuntimePermission("createClassLoader")
權限調用 checkPermission
。
如果覆寫此方法,那麼應該在已覆寫方法通常將要拋出異常時調用 super.checkCreateClassLoader
。
SecurityException
- 如果調用執行緒沒有創建新類別載入器的權限。ClassLoader.ClassLoader()
,
checkPermission
public void checkAccess(Thread t)
SecurityException
。
由 Thread
類別的 stop
、suspend
、resume
、setPriority
、setName
和 setDaemon
方法為當前的安全管理器調用此方法。
如果 thread 參數是一個系統執行緒(屬於具有一個 null
父執行緒的執行緒組),那麼此方法使用 RuntimePermission("modifyThread")
權限調用 checkPermission
。如果 thread 參數不 是一個系統執行緒,則此方法不執行任何操作。
希望具有更為嚴格策略的應用程序應該覆寫此方法。如果覆寫此方法,那麼覆寫它的方法應該進行額外的檢查,查看調用執行緒是否具有 RuntimePermission("modifyThread")
權限,如果是,則此方法不執行任何操作。這樣做是為了確保允許那些被授予該權限的程式碼(如 JDK 本身)能夠操作所有執行緒。
如果覆寫此方法,那麼應該由已覆寫方法中的第一條語句調用 super.checkAccess
,或者應該在已覆寫方法中放入等效的安全檢查程式碼。
t
- 要檢查的執行緒。
SecurityException
- 如果調用執行緒沒有修改執行緒的權限。
NullPointerException
- 如果執行緒參數為 null
。resume
,
setDaemon
,
setName
,
setPriority
,
stop
,
suspend
,
checkPermission
public void checkAccess(ThreadGroup g)
SecurityException
。
當創建新的子執行緒或子執行緒組時,由 ThreadGroup
類別的 setDaemon
、setMaxPriority
、stop
、suspend
、resume
和 destroy
方法為當前的安全管理器調用此方法。
如果該執行緒組是一個系統執行緒組(具有 null
父執行緒),那麼此方法使用 RuntimePermission("modifyThreadGroup")
權限調用 checkPermission
。如果該執行緒組不 是一個系統執行緒組,則此方法不執行任何操作。
希望具有更為嚴格策略的應用程序應該覆寫此方法。如果覆寫此方法,那麼覆寫它的方法應該進行額外的檢查,查看調用執行緒是否具有 RuntimePermission("modifyThreadGroup")
權限,如果是,則此方法不執行任何操作。這樣做是為了確保允許那些被授予該權限的程式碼(如 JDK 本身)能夠操作所有執行緒。
如果覆寫此方法,那麼應該由已覆寫方法中的第一條語句調用 super.checkAccess
,或者應該在已覆寫方法中放入等效的安全檢查。
g
- 要檢查的執行緒組。
SecurityException
- 如果調用執行緒沒有修改執行緒組的權限。
NullPointerException
- 如果執行緒組參數為 null
。destroy
,
resume
,
setDaemon
,
setMaxPriority
,
stop
,
suspend
,
checkPermission
public void checkExit(int status)
SecurityException
。
由 Runtime
類別的 exit
方法為當前的安全管理器調用此方法。狀態 0
表示成功,其他值則表示各種錯誤。
此方法用 RuntimePermission("exitVM."+status)
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkExit
。
status
- 退出狀態。
SecurityException
- 如果調用執行緒沒有用指定的狀態暫停 Java 虛擬機器的權限。exit
,
checkPermission
public void checkExec(String cmd)
SecurityException
。
由 Runtime
類別的 exec
方法為當前的安全管理器調用此方法。
如果 cmd 是絕對路徑,那麼此方法使用 FilePermission(cmd,"execute")
權限調用 checkPermission
,否則用 FilePermission("<<ALL FILES>>","execute")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkExec
。
cmd
- 指定的系統命令。
SecurityException
- 如果調用執行緒沒有創建子進程的權限。
NullPointerException
- 如果 cmd
參數為 null
。Runtime.exec(java.lang.String)
,
Runtime.exec(java.lang.String, java.lang.String[])
,
Runtime.exec(java.lang.String[])
,
Runtime.exec(java.lang.String[], java.lang.String[])
,
checkPermission
public void checkLink(String lib)
SecurityException
。此方法中的參數可以是一個簡單的資源庫名,或者是一個完整的檔案名。
由 Runtime
類別的 load
和 loadLibrary
方法為當前的安全管理器調用此方法。
此方法用 RuntimePermission("loadLibrary."+lib)
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkLink
。
lib
- 資源庫名。
SecurityException
- 如果調用執行緒沒有動態地連接該資源庫的權限。
NullPointerException
- 如果 lib
參數為 null
。Runtime.load(java.lang.String)
,
Runtime.loadLibrary(java.lang.String)
,
checkPermission
public void checkRead(FileDescriptor fd)
SecurityException
。
此方法用 RuntimePermission("readFileDescriptor")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkRead
。
fd
- 取決於系統的檔案描述符。
SecurityException
- 如果調用執行緒沒有存取指定檔案描述符的權限。
NullPointerException
- 如果檔案描述符參數為 null
。FileDescriptor
,
checkPermission
public void checkRead(String file)
SecurityException
。
此方法用 FilePermission(file,"read")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkRead
。
file
- 取決於系統的檔案名。
SecurityException
- 如果調用執行緒沒有存取指定檔案的權限。
NullPointerException
- 如果 file
參數為 null
。checkPermission
public void checkRead(String file, Object context)
SecurityException
。該上下文必須是以前調用 getSecurityContext
所返回的安全上下文。
如果 context
是 AccessControlContext
的一個實例,則用 FilePermission(file,"read")
權限調用 AccessControlContext.checkPermission
方法。
如果 context
不是 AccessControlContext
的一個實例,則拋出 SecurityException
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkRead
。
file
- 取決於系統的檔案名。context
- 取決於系統的安全上下文。
SecurityException
- 如果指定的安全上下文不是 AccessControlContext
的一個實例(如為 null
),或者沒有讀取指定檔案的權限。
NullPointerException
- 如果 file
參數為 null
。getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
public void checkWrite(FileDescriptor fd)
SecurityException
。
此方法用 RuntimePermission("writeFileDescriptor")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkWrite
。
fd
- 取決於系統的檔案描述符。
SecurityException
- 如果調用的方法沒有存取指定檔案描述符的權限。
NullPointerException
- 如果檔案描述符參數為 null
。FileDescriptor
,
checkPermission
public void checkWrite(String file)
SecurityException
。
此方法用 FilePermission(file,"write")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkWrite
。
file
- 取決於系統的檔案名。
SecurityException
- 如果調用執行緒沒有存取指定檔案的權限。
NullPointerException
- 如果 file
參數為 null
。checkPermission
public void checkDelete(String file)
SecurityException
。
由 File
類別的 delete
方法為當前的安全管理器調用此方法。
此方法用 FilePermission(file,"delete")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkDelete
。
file
- 取決於系統的檔案名。
SecurityException
- 如果調用執行緒沒有刪除檔案的權限。
NullPointerException
- 如果 file
參數為 null
。File.delete()
,
checkPermission
public void checkConnect(String host, int port)
SecurityException
。
埠號號 -1
表示調用的方法正在試圖確定指定主機名的 IP 位址。
如果埠號號不等於 -1,則此方法用 SocketPermission(host+":"+port,"connect")
權限調用 checkPermission
。如果埠號號等於 -1,則用 SocketPermission(host,"resolve")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkConnect
。
host
- 要連接的主機名埠號。port
- 要連接的協議埠號。
SecurityException
- 如果不允許調用執行緒打開與指定 host
和 port
的Socket連接。
NullPointerException
- 如果 host
參數為 null
。checkPermission
public void checkConnect(String host, int port, Object context)
SecurityException
。
埠號號 -1
表示調用的方法正試圖確定指定主機名的 IP 位址。
如果 context
不是 AccessControlContext
的一個實例,則拋出 SecurityException
。
否則就檢查埠號號。如果埠號號不等於 -1,則用 SocketPermission(host+":"+port,"connect")
權限調用 context
的 checkPermission
方法。如果埠號號等於 -1,則用 SocketPermission(host,"resolve")
權限調用 context
的 checkPermission
方法。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkConnect
。
host
- 要連接的主機名埠號。port
- 要連接的協議埠號。context
- 取決於系統的安全上下文。
SecurityException
- 如果指定的安全上下文不是 AccessControlContext
的一個實例(如為 null
),或者不允許打開與指定 host
和 port
Socket連接。
NullPointerException
- 如果 host
參數為 null
。getSecurityContext()
,
AccessControlContext.checkPermission(java.security.Permission)
public void checkListen(int port)
SecurityException
。
如果埠號號不是 0,則此方法用 SocketPermission("localhost:"+port,"listen")
調用 checkPermission
。如果埠號號是 0,則此方法用 SocketPermission("localhost:1024-","listen")
調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkListen
。
port
- 本地埠號。
SecurityException
- 如果調用的方法沒有偵聽指定埠號的權限。checkPermission
public void checkAccept(String host, int port)
SecurityException
。
由 ServerSocket
類別的 accept
方法為當前的安全管理器調用此方法。
此方法用 SocketPermission(host+":"+port,"accept")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkAccept
。
host
- Socket連接的主機名。port
- Socket連接的埠號號。
SecurityException
- 如果調用執行緒沒有接受連接的權限。
NullPointerException
- 如果 host
參數為 null
。ServerSocket.accept()
,
checkPermission
public void checkMulticast(InetAddress maddr)
SecurityException
。
此方法使用 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkMulticast
。
maddr
- 要使用的 Internet 組位址。
SecurityException
- 如果不允許調用執行緒使用(加入/離開/發送/接收)IP 多址廣播。
NullPointerException
- 如果位址參數為 null
。checkPermission
@Deprecated public void checkMulticast(InetAddress maddr, byte ttl)
SecurityException
。
此方法用 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkMulticast
。
maddr
- 要使用的 Internet 組位址。ttl
- 正在使用的值,如果是用多址廣播發送的話。註:此特定實作不使用 ttl 參數。
SecurityException
- 如果不允許調用執行緒使用(加入/離開/發送/接收)IP 多址廣播。
NullPointerException
- 如果位址參數為 null
。checkPermission
public void checkPropertiesAccess()
SecurityException
。
由 System
類別的 getProperties
和 setProperties
方法使用此方法。
此方法用 PropertyPermission("*", "read,write")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkPropertiesAccess
。
SecurityException
- 如果調用執行緒沒有存取或修改系統屬性的權限。System.getProperties()
,
System.setProperties(java.util.Properties)
,
checkPermission
public void checkPropertyAccess(String key)
key
名的系統屬性,則拋出 SecurityException
。
由 System
類別的 getProperty
方法使用此方法。
此方法用 PropertyPermission(key, "read")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkPropertyAccess
。
key
- 系統屬性鍵。
SecurityException
- 如果調用執行緒沒有存取指定系統屬性的權限。
NullPointerException
- 如果 key
參數為 null
。
IllegalArgumentException
- 如果 key
為空。System.getProperty(java.lang.String)
,
checkPermission
public boolean checkTopLevelWindow(Object window)
window
參數指出的頂層視窗,則返回 false
。在這種情況下,調用方仍然可以決定顯示視窗,但視窗應包括某些可視的警告。如果此方法返回 true
,則視窗的顯示沒有任何特殊的限制。
有關受信任和不受信任視窗的更多資訊,請參見 Window
類別。
此方法用 AWTPermission("showWindowWithoutWarningBanner")
權限調用 checkPermission
,並且如果未拋出 SecurityException,則返回 true
,否則返回 false
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要返回 false
時調用 super.checkTopLevelWindow
,並且應該返回 super.checkTopLevelWindow
值。
window
- 所創建的新視窗。
true
,否則返回 false
。
NullPointerException
- 如果 window
參數為 null
。Window
,
checkPermission
public void checkPrintJobAccess()
SecurityException
。
此方法用 RuntimePermission("queuePrintJob")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkPrintJobAccess
。
SecurityException
- 如果調用執行緒沒有發起列印作業請求的權限。checkPermission
public void checkSystemClipboardAccess()
SecurityException
。
此方法用 AWTPermission("accessClipboard")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkSystemClipboardAccess
。
SecurityException
- 如果調用執行緒沒有存取系統剪貼板的權限。checkPermission
public void checkAwtEventQueueAccess()
SecurityException
。
此方法用 AWTPermission("accessEventQueue")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkAwtEventQueueAccess
。
SecurityException
- 如果調用執行緒沒有存取 AWT 事件佇列的權限。checkPermission
public void checkPackageAccess(String pkg)
SecurityException
。
由類別載入器的 loadClass
方法使用此方法。
此方法首先獲取受限制套件的列表,方法是從對 java.security.Security.getProperty("package.access")
的調用中獲得一個逗號分隔的列表,並查看受限制套件是否以 pkg
開頭或等於該字元。如果是,則用 RuntimePermission("accessClassInPackage."+pkg)
權限調用 checkPermission
。
如果覆寫了此方法,則應在已覆寫方法的首行調用 super.checkPackageAccess
。
pkg
- 套件名。
SecurityException
- 如果調用執行緒沒有存取指定套件的權限。
NullPointerException
- 如果包名參數為 null
。loadClass
,
getProperty
,
checkPermission
public void checkPackageDefinition(String pkg)
SecurityException
。
由類別載入器的 loadClass
方法使用此方法。
此方法首先獲取受限制套件的列表,方法是從對 java.security.Security.getProperty("package.definition")
的調用中獲得一個逗號分隔的列表,並查看受限制套件是否以 pkg
開頭或等於該字元。如果是,則用 RuntimePermission("defineClassInPackage."+pkg)
權限調用 checkPermission
。
如果覆寫了此方法,則應在已覆寫方法的首行調用 super.checkPackageDefinition
。
pkg
- 套件名。
SecurityException
- 如果調用執行緒沒有在指定包中定義類別的權限。ClassLoader.loadClass(java.lang.String, boolean)
,
getProperty
,
checkPermission
public void checkSetFactory()
ServerSocket
或 Socket
使用的Socket處理器,或者由 URL
使用的串流處理程序處理器,則拋出 SecurityException
。
此方法用 RuntimePermission("setFactory")
權限調用 checkPermission
。
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkSetFactory
。
SecurityException
- 如果調用執行緒沒有指定Socket處理器或串流處理程序處理器的權限。setSocketFactory
,
setSocketImplFactory
,
setURLStreamHandlerFactory
,
checkPermission
public void checkMemberAccess(Class<?> clazz, int which)
SecurityException
。
預設的策略是允許存取 PUBLIC 成員,以及存取具有與調用方相同類別載入器的類別。在所有其他情況下,此方法用 RuntimePermission("accessDeclaredMembers")
權限調用 checkPermission
。
如果覆寫此方法,則不能調用 super.checkMemberAccess
,因為 checkMemberAccess
的預設實作依賴於堆疊(stack)空間深度為 4 時檢查的程式碼。
clazz
- 要執行反射的類別。which
- 存取型別,PUBLIC 或 DECLARED。
SecurityException
- 如果調用方沒有存取成員的權限。
NullPointerException
- 如果 clazz
參數為 null
。Member
,
checkPermission
public void checkSecurityAccess(String target)
如果允許請求的權限,則此方法不執行任何操作。如果拒絕,則引發 SecurityException。
此方法為給定權限的目標名創建一個 SecurityPermission
物件並用該物件調用 checkPermission
。
有關可用權限目標名的列表,請參閱
的文檔。
SecurityPermission
如果覆寫此方法,那麼通常應該在已覆寫方法將要拋出異常時調用 super.checkSecurityAccess
。
target
- SecurityPermission
的目標名。
SecurityException
- 如果調用執行緒沒有所請求存取的權限。
NullPointerException
- 如果 target
為 null。
IllegalArgumentException
- 如果 target
為空。checkPermission
public ThreadGroup getThreadGroup()
ThreadGroup
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。