日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSSecurityManager

SecurityManager

java.lang.Object

|---java.lang.SecurityManager

public class SecurityManager
extends Object

安全管理器是一個允許應用程序?qū)崿F(xiàn)安全策略的類。 它允許應用程序在執(zhí)行可能不安全或敏感的操作之前確定該操作是什么以及是否在允許執(zhí)行該操作的安全上下文中嘗試該操作。 應用程序可以允許或禁止該操作。

SecurityManager 類包含許多名稱以單詞 check 開頭的方法。 在這些方法執(zhí)行某些潛在敏感操作之前,這些方法由 Java 庫中的各種方法調(diào)用。 這種檢查方法的調(diào)用通常如下所示:

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

因此,安全管理器有機會通過拋出異常來阻止操作完成。 如果操作被允許,安全管理器例程會簡單地返回,但如果操作不被允許,則拋出 SecurityException。 此約定的唯一例外是 checkTopLevelWindow,它返回一個布爾值。

當前的安全管理器由 System.class 中的 setSecurityManager 方法設置。 當前的安全管理器通過 getSecurityManager 方法獲取。

特殊方法 SecurityManager#checkPermission(java.security.Permission) 確定是否應授予或拒絕由指定權限指示的訪問請求。 默認實現(xiàn)調(diào)用

   AccessController.checkPermission(perm); 

如果請求的訪問被允許,checkPermission 會安靜地返回。如果被拒絕,則會引發(fā) SecurityException。

從 Java 2 SDK v1.2 開始,SecurityManager 中其他每個檢查方法的默認實現(xiàn)是調(diào)用 SecurityManager 的 checkPermission 方法來確定調(diào)用線程是否有權執(zhí)行請求的操作。

請注意,只有一個權限參數(shù)的 checkPermission 方法總是在當前執(zhí)行線程的上下文中執(zhí)行安全檢查。有時,應該在給定上下文中進行的安全檢查實際上需要在不同的上下文中進行(例如,從工作線程中)。針對這種情況提供了包含上下文參數(shù)的 SecurityManager#getSecurityContext 方法和 SecurityManager#checkPermission(java.security.Permission, java.lang.Object) 方法。 getSecurityContext 方法返回當前調(diào)用上下文的“快照”。 (默認實現(xiàn)返回一個 AccessControlContext 對象。)示例調(diào)用如下:

   Object context = null;
   SecurityManager sm = System.getSecurityManager();
   if (sm != null) context = sm.getSecurityContext();

checkPermission 方法除了權限外還接受上下文對象,根據(jù)該上下文而不是當前執(zhí)行線程的上下文做出訪問決策。 因此,不同上下文中的代碼可以調(diào)用該方法,傳遞權限和先前保存的上下文對象。 使用如上例中獲得的 SecurityManager sm 的示例調(diào)用如下:

   if (sm != null) sm.checkPermission(permission, context); 

權限分為以下類別:文件、套接字、網(wǎng)絡、安全性、運行時、屬性、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.Permission 的抽象子類。 BasicPermission 定義了包含遵循分層屬性命名約定的名稱的所有權限所需的功能(例如,“exitVM”、“setFactory”、“queuePrintJob”等)。星號可能出現(xiàn)在名稱的末尾,跟在“.”之后,或者單獨出現(xiàn),表示通配符匹配。例如:“一”。 or "" 有效,"a" 或 "ab" 無效。

FilePermission 和 SocketPermission 是頂級權限類 (java.security.Permission) 的子類。與 BasicPermission 子類直接從 Permission 而不是從 BasicPermission 中使用的類相比,此類具有更復雜的名稱語法。例如,對于 java.io.FilePermission 對象,權限名稱是文件(或目錄)的路徑名。

一些權限類有一個“動作”列表,它告訴對象允許的動作。例如,對于 java.io.FilePermission 對象,操作列表(例如“讀、寫”)指定為指定文件(或指定目錄中的文件)授予哪些操作。

其他權限類用于“命名”權限 - 包含名稱但沒有操作列表的權限;您要么擁有命名權限,要么沒有。

注意:還有一個 java.security.AllPermission 權限意味著所有權限。它的存在是為了簡化可能需要執(zhí)行需要全部(或大量)權限的多項任務的系統(tǒng)管理員的工作。

字段摘要

修飾符和類型 字段 描述
protected boolean inCheck 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。

構造函數(shù)摘要

構造函數(shù) 描述
SecurityManager() 構造一個新的 SecurityManager。

方法總結

修飾符和類型 方法 描述
void checkAccept(String host, int port) 如果不允許調(diào)用線程接受來自指定主機和端口號的套接字連接,則拋出 SecurityException。
void checkAccess(Thread t) 如果不允許調(diào)用線程修改線程參數(shù),則拋出 SecurityException。
void checkAccess(ThreadGroup g) 如果不允許調(diào)用線程修改線程組參數(shù),則拋出 SecurityException。
void checkAwtEventQueueAccess() 已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。
void checkConnect(String host, int port) 如果不允許調(diào)用線程打開到指定主機和端口號的套接字連接,則拋出 SecurityException。
void checkConnect(String host, int port, Object context) 如果不允許指定的安全上下文打開到指定主機和端口號的套接字連接,則拋出 SecurityException。
void checkCreateClassLoader() 如果不允許調(diào)用線程創(chuàng)建新的類加載器,則拋出 SecurityException。
void checkDelete(String file) 如果不允許調(diào)用線程刪除指定文件,則拋出 SecurityException。
void checkExec(String cmd) 如果不允許調(diào)用線程創(chuàng)建子進程,則拋出 SecurityException。
void checkExit(int status) 如果不允許調(diào)用線程導致 Java 虛擬機以指定的狀態(tài)碼停止,則拋出 SecurityException。
void checkLink(String lib) 如果不允許調(diào)用線程動態(tài)鏈接字符串參數(shù)文件指定的庫代碼,則拋出 SecurityException。
void checkListen(int port) 如果不允許調(diào)用線程在指定的本地端口號上等待連接請求,則拋出 SecurityException。
void checkMemberAccess(Class clazz, int which) 已棄用。 此方法依賴于調(diào)用者處于 4 的堆棧深度,這很容易出錯并且不能由運行時強制執(zhí)行。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。
void checkMulticast(InetAddress maddr) 如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播,則拋出 SecurityException。
void checkMulticast(InetAddress maddr, byte ttl) 已棄用。 改用#checkPermission(java.security.Permission)
void checkPackageAccess(String pkg) 如果不允許調(diào)用線程訪問參數(shù)指定的包,則拋出 SecurityException。
void checkPackageDefinition(String pkg) 如果不允許調(diào)用線程在參數(shù)指定的包中定義類,則拋出 SecurityException。
void checkPermission(Permission perm) 如果根據(jù)當前有效的安全策略不允許由給定權限指定的請求訪問,則拋出 SecurityException。
void checkPermission(Permission perm, Object context) 如果指定的安全上下文被拒絕訪問由給定權限指定的資源,則引發(fā) SecurityException。
void checkPrintJobAccess() 如果不允許調(diào)用線程發(fā)起打印作業(yè)請求,則拋出 SecurityException。
void checkPropertiesAccess() 如果不允許調(diào)用線程訪問或修改系統(tǒng)屬性,則拋出 SecurityException。
void checkPropertyAccess(String key) 如果不允許調(diào)用線程訪問具有指定鍵名的系統(tǒng)屬性,則拋出 SecurityException。
void checkRead(FileDescriptor fd) 如果不允許調(diào)用線程從指定的文件描述符中讀取,則拋出 SecurityException。
void checkRead(String file) 如果不允許調(diào)用線程讀取由字符串參數(shù)指定的文件,則拋出 SecurityException。
void checkRead(String file, Object context) 如果不允許指定的安全上下文讀取字符串參數(shù)指定的文件,則拋出 SecurityException。
void checkSecurityAccess(String target) 確定是否應授予或拒絕具有指定權限目標名稱的權限。
void checkSetFactory() 如果不允許調(diào)用線程設置 ServerSocket 或 Socket 使用的套接字工廠或 URL 使用的流處理程序工廠,則拋出 SecurityException。
void checkSystemClipboardAccess() 已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。
boolean checkTopLevelWindow(Object window) 已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。
void checkWrite(FileDescriptor fd) 如果不允許調(diào)用線程寫入指定的文件描述符,則拋出 SecurityException。
void checkWrite(String file) 如果不允許調(diào)用線程寫入由字符串參數(shù)指定的文件,則拋出 SecurityException。
protected int classDepth(String name) 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
protected int classLoaderDepth() 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
protected ClassLoader currentClassLoader() 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
protected Class currentLoadedClass() 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
protected Class[] getClassContext() 以類數(shù)組的形式返回當前執(zhí)行堆棧。
boolean getInCheck() 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
Object getSecurityContext() 創(chuàng)建一個封裝當前執(zhí)行環(huán)境的對象。
ThreadGroup getThreadGroup() 返回線程組,在該線程組中實例化在調(diào)用它時創(chuàng)建的任何新線程。
protected boolean inClass(String name) 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
protected boolean inClassLoader() 已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細信息

inCheck

@Deprecated protected boolean inCheck

已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。

如果正在進行安全檢查,則該字段為 true; 否則為 false。

構造函數(shù)詳細信息

SecurityManager

public SecurityManager()

構造一個新的 SecurityManager。

如果已經(jīng)安裝了安全管理器,該方法首先調(diào)用安全管理器的 checkPermission 方法,具有 RuntimePermission("createSecurityManager") 權限,以確保調(diào)用線程具有創(chuàng)建新安全管理器的權限。 這可能會導致拋出 SecurityException。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器已經(jīng)存在并且其 checkPermission 方法不允許創(chuàng)建新的安全管理器。

方法詳情

getInCheck

@Deprecated public boolean getInCheck()

已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。

測試是否正在進行安全檢查。

返回:

inCheck 字段的值。 如果正在進行安全檢查,則該字段應包含 true,否則為 false。

getClassContext

protected Class[] getClassContext()

以類數(shù)組的形式返回當前執(zhí)行堆棧。

數(shù)組的長度是執(zhí)行堆棧上的方法數(shù)。 索引 0 處的元素是當前執(zhí)行方法的類,索引 1 處的元素是該方法調(diào)用者的類,依此類推。

返回:

執(zhí)行堆棧。

currentClassLoader

@Deprecated protected ClassLoader currentClassLoader()

已棄用。不推薦這種類型的安全檢查。建議改用 checkPermission 調(diào)用。

從使用非系統(tǒng)類加載器定義的類中返回最近執(zhí)行的方法的類加載器。非系統(tǒng)類加載器被定義為不等于系統(tǒng)類加載器(由 ClassLoader#getSystemClassLoader 返回)或其祖先之一的類加載器。

該方法將在以下三種情況下返回 null:

  1. 執(zhí)行堆棧上的所有方法都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
  2. 執(zhí)行堆棧上的所有方法直到第一個“特權”調(diào)用者(參見 AccessController.doPrivileged(java.security.PrivilegedAction))都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
  3. 使用 java.security.AllPermission 調(diào)用 checkPermission 不會導致 SecurityException。

返回:

使用非系統(tǒng)類加載器定義的類的方法堆棧上最近出現(xiàn)的類加載器。

currentLoadedClass

@Deprecated protected Class currentLoadedClass()

已棄用。不推薦這種類型的安全檢查。建議改用 checkPermission 調(diào)用。

從使用非系統(tǒng)類加載器定義的類中返回最近執(zhí)行的方法的類。非系統(tǒng)類加載器被定義為不等于系統(tǒng)類加載器(由 ClassLoader#getSystemClassLoader 返回)或其祖先之一的類加載器。

該方法將在以下三種情況下返回 null:

  1. 執(zhí)行堆棧上的所有方法都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
  2. 執(zhí)行堆棧上的所有方法直到第一個“特權”調(diào)用者(參見 AccessController.doPrivileged(java.security.PrivilegedAction))都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
  3. 使用 java.security.AllPermission 調(diào)用 checkPermission 不會導致 SecurityException。

返回:

使用非系統(tǒng)類加載器定義的類的方法堆棧上最近出現(xiàn)的類。

classDepth

@Deprecated protected int classDepth(String name)

已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。

返回指定類的堆棧深度。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 要搜索的類的完全限定名稱。

返回:

具有指定名稱的類中第一次出現(xiàn)方法的堆棧幀深度; -1 如果找不到這樣的框架。

classLoaderDepth

@Deprecated protected int classLoaderDepth()

已棄用。不推薦這種類型的安全檢查。建議改用 checkPermission 調(diào)用。

返回使用非系統(tǒng)類加載器定義的類中最近執(zhí)行的方法的堆棧深度。非系統(tǒng)類加載器被定義為不等于系統(tǒng)類加載器(由 ClassLoader#getSystemClassLoader 返回)或其祖先之一的類加載器。

此方法將在以下三種情況下返回 -1:

  1. 執(zhí)行堆棧上的所有方法都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
  2. 執(zhí)行堆棧上的所有方法直到第一個“特權”調(diào)用者(參見 AccessController.doPrivileged(java.security.PrivilegedAction))都來自使用系統(tǒng)類加載器或其祖先之一定義的類。
  3. 使用 java.security.AllPermission 調(diào)用 checkPermission 不會導致 SecurityException。

返回:

使用非系統(tǒng)類加載器定義的類中最近出現(xiàn)的方法的堆棧幀深度。

inClass

@Deprecated protected boolean inClass(String name)

已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。

測試具有指定名稱的類中的方法是否在執(zhí)行堆棧上。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 類的完全限定名。

返回:

如果具有指定名稱的類中的方法在執(zhí)行堆棧上,則為 true; 否則為假。

inClassLoader

@Deprecated protected boolean inClassLoader()

已棄用。 不推薦這種類型的安全檢查。 建議改用 checkPermission 調(diào)用。

基本上,測試使用類加載器定義的類中的方法是否在執(zhí)行堆棧上。

返回:

如果對 currentClassLoader 的調(diào)用具有非空返回值,則為 true。

getSecurityContext

public Object getSecurityContext()

創(chuàng)建一個封裝當前執(zhí)行環(huán)境的對象。 例如,三參數(shù) checkConnect 方法和二參數(shù) checkRead 方法使用此方法的結果。 這些方法是必需的,因為可以調(diào)用受信任的方法來讀取文件或代表另一個方法打開套接字。 受信任的方法需要確定是否允許其他(可能不受信任的)方法自行執(zhí)行操作。

此方法的默認實現(xiàn)是返回一個 AccessControlContext 對象。

返回:

一個依賴于實現(xiàn)的對象,它封裝了有關當前執(zhí)行環(huán)境的足夠信息,以便稍后執(zhí)行一些安全檢查。

checkPermission

public void checkPermission(Permission perm)

如果根據(jù)當前有效的安全策略不允許由給定權限指定的請求訪問,則引發(fā) SecurityException。

此方法使用給定的權限調(diào)用 AccessController.checkPermission。

參數(shù):

參數(shù)名稱 參數(shù)描述
perm 請求的權限。

Throws:

Throw名稱 Throw描述
SecurityException 如果根據(jù)當前的安全策略不允許訪問。
NullPointerException 如果權限參數(shù)為空。

checkPermission

public void checkPermission(Permission perm, Object context)

如果指定的安全上下文被拒絕訪問由給定權限指定的資源,則引發(fā) SecurityException。 上下文必須是先前調(diào)用 getSecurityContext 返回的安全上下文,并且訪問控制決策基于為該安全上下文配置的安全策略。

如果 context 是 AccessControlContext 的實例,則使用指定的權限調(diào)用 AccessControlContext.checkPermission 方法。

如果 context 不是 AccessControlContext 的實例,則拋出 SecurityException。

參數(shù):

參數(shù)名稱 參數(shù)描述
perm 指定的權限
context 依賴于系統(tǒng)的安全上下文。

Throws:

Throw名稱 Throw描述
SecurityException 如果指定的安全上下文不是 AccessControlContext 的實例(例如,為null),或者被拒絕訪問由給定權限指定的資源。
NullPointerException 如果權限參數(shù)為null。

checkCreateClassLoader

public void checkCreateClassLoader()

如果不允許調(diào)用線程創(chuàng)建新的類加載器,則拋出 SecurityException。

此方法使用 RuntimePermission("createClassLoader") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkCreateClassLoader。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有創(chuàng)建新類加載器的權限。

checkAccess

public void checkAccess(Thread t)

如果不允許調(diào)用線程修改線程參數(shù),則拋出 SecurityException。

此方法由 Thread 類的 stop、suspend、resume、setPriority、setName 和 setDaemon 方法為當前安全管理器調(diào)用。

如果線程參數(shù)是系統(tǒng)線程(屬于具有 null 父級的線程組),則此方法使用 RuntimePermission("modifyThread") 權限調(diào)用 checkPermission。如果線程參數(shù)不是系統(tǒng)線程,則此方法只是靜默返回。

需要更嚴格策略的應用程序應覆蓋此方法。如果此方法被覆蓋,則覆蓋它的方法應另外檢查調(diào)用線程是否具有 RuntimePermission("modifyThread") 權限,如果是,則靜默返回。這是為了確保授予該權限的代碼(例如 JDK 本身)可以操作任何線程。

如果此方法被覆蓋,則 super.checkAccess 應由被覆蓋方法中的第一條語句調(diào)用,或者應在被覆蓋方法中放置等效的安全檢查。

參數(shù):

參數(shù)名稱 參數(shù)描述
t 要檢查的線程。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有修改線程的權限。
NullPointerException 如果線程參數(shù)為空。

checkAccess

public void checkAccess(ThreadGroup g)

如果不允許調(diào)用線程修改線程組參數(shù),則拋出 SecurityException。

當創(chuàng)建新的子線程或子線程組時,通過 ThreadGroup 類的 setDaemon、setMaxPriority、stop、suspend、resume 和 destroy 方法為當前安全管理器調(diào)用此方法。

如果線程組參數(shù)是系統(tǒng)線程組(具有 null 父級),則此方法使用 RuntimePermission("modifyThreadGroup") 權限調(diào)用 checkPermission。如果線程組參數(shù)不是系統(tǒng)線程組,則此方法只是靜默返回。

需要更嚴格策略的應用程序應覆蓋此方法。如果此方法被覆蓋,則覆蓋它的方法應另外檢查調(diào)用線程是否具有 RuntimePermission("modifyThreadGroup") 權限,如果是,則靜默返回。這是為了確保授予該權限的代碼(例如 JDK 本身)可以操作任何線程。

如果此方法被覆蓋,則 super.checkAccess 應由被覆蓋方法中的第一條語句調(diào)用,或者應在被覆蓋方法中放置等效的安全檢查。

參數(shù):

參數(shù)名稱 參數(shù)描述
g 要檢查的線程組。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有修改線程組的權限。
NullPointerException 如果線程組參數(shù)為空。

checkExit

public void checkExit(int status)

如果不允許調(diào)用線程導致 Java 虛擬機以指定的狀態(tài)碼停止,則拋出 SecurityException。

該方法由 Runtime 類的 exit 方法為當前安全管理器調(diào)用。 狀態(tài)為 0 表示成功; 其他值表示各種錯誤。

此方法使用 RuntimePermission("exitVM."+status) 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkExit。

參數(shù):

參數(shù)名稱 參數(shù)描述
status 退出狀態(tài)。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有權限以指定狀態(tài)暫停 Java 虛擬機。

checkExec

public void checkExec(String cmd)

如果不允許調(diào)用線程創(chuàng)建子進程,則拋出 SecurityException。

此方法由 Runtime 類的 exec 方法為當前安全管理器調(diào)用。

如果 cmd 是絕對路徑,則此方法使用 FilePermission(cmd,"execute") 權限調(diào)用 checkPermission,否則使用 FilePermission("<>","execute") 調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkExec。

參數(shù):

參數(shù)名稱 參數(shù)描述
cmd 指定的系統(tǒng)命令。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有創(chuàng)建子進程的權限。
NullPointerException 如果 cmd 參數(shù)為空。

checkLink

public void checkLink(String lib)

如果不允許調(diào)用線程動態(tài)鏈接字符串參數(shù)文件指定的庫代碼,則拋出 SecurityException。 參數(shù)要么是一個簡單的庫名,要么是一個完整的文件名。

該方法由 Runtime 類的 load 和 loadLibrary 方法為當前安全管理器調(diào)用。

此方法使用 RuntimePermission("loadLibrary."+lib) 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkLink。

參數(shù):

參數(shù)名稱 參數(shù)描述
lib 庫的名稱。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有動態(tài)鏈接庫的權限。
NullPointerException 如果 lib 參數(shù)為空。

checkRead

public void checkRead(FileDescriptor fd)

如果不允許調(diào)用線程從指定的文件描述符中讀取,則拋出 SecurityException。

此方法使用 RuntimePermission("readFileDescriptor") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkRead。

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 系統(tǒng)相關的文件描述符。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問指定文件描述符的權限。
NullPointerException 如果文件描述符參數(shù)為空。

checkRead

public void checkRead(String file)

如果不允許調(diào)用線程讀取由字符串參數(shù)指定的文件,則拋出 SecurityException。

此方法使用 FilePermission(file,"read") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkRead。

參數(shù):

參數(shù)名稱 參數(shù)描述
file 系統(tǒng)相關的文件名。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問指定文件的權限。
NullPointerException 如果文件參數(shù)為空。

checkRead

public void checkRead(String file, Object context)

如果不允許指定的安全上下文讀取字符串參數(shù)指定的文件,則拋出 SecurityException。 上下文必須是先前調(diào)用 getSecurityContext 返回的安全上下文。

如果 context 是 AccessControlContext 的一個實例,那么將使用 FilePermission(file,"read") 權限調(diào)用 AccessControlContext.checkPermission 方法。

如果 context 不是 AccessControlContext 的實例,則拋出 SecurityException。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkRead。

參數(shù):

參數(shù)名稱 參數(shù)描述
file 系統(tǒng)相關的文件名。
context 依賴于系統(tǒng)的安全上下文。

Throws:

Throw名稱 Throw描述
SecurityException 如果指定的安全上下文不是 AccessControlContext 的實例(例如,為 null),或者沒有讀取指定文件的權限。
NullPointerException 如果文件參數(shù)為空。

checkWrite

public void checkWrite(FileDescriptor fd)

如果不允許調(diào)用線程寫入指定的文件描述符,則拋出 SecurityException。

此方法使用 RuntimePermission("writeFileDescriptor") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkWrite。

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 系統(tǒng)相關的文件描述符。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問指定文件描述符的權限。
NullPointerException 如果文件描述符參數(shù)為空。

checkWrite

public void checkWrite(String file)

如果不允許調(diào)用線程寫入由字符串參數(shù)指定的文件,則拋出 SecurityException。

此方法使用 FilePermission(file,"write") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkWrite。

參數(shù):

參數(shù)名稱 參數(shù)描述
file 系統(tǒng)相關的文件名。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問指定文件的權限。
NullPointerException 如果文件參數(shù)為空。

checkDelete

public void checkDelete(String file)

如果不允許調(diào)用線程刪除指定文件,則拋出 SecurityException。

該方法由 File 類的 delete 方法為當前安全管理器調(diào)用。

此方法使用 FilePermission(file,"delete") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkDelete。

參數(shù):

參數(shù)名稱 參數(shù)描述
file 系統(tǒng)相關的文件名。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有刪除文件的權限。
NullPointerException 如果文件參數(shù)為空。

checkConnect

public void checkConnect(String host, int port)

如果不允許調(diào)用線程打開到指定主機和端口號的套接字連接,則拋出 SecurityException。

端口號 -1 表示調(diào)用方法正在嘗試確定指定主機名的 IP 地址。

如果端口不等于 -1,則此方法使用 SocketPermission(host+":"+port,"connect") 權限調(diào)用 checkPermission。 如果端口等于 -1,那么它會調(diào)用帶有 SocketPermission(host,"resolve") 權限的 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkConnect。

參數(shù):

參數(shù)名稱 參數(shù)描述
host 要連接的主機名端口。
port 要連接的協(xié)議端口。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程無權打開到指定主機和端口的套接字連接。
NullPointerException 如果主機參數(shù)為空。

checkConnect

public void checkConnect(String host, int port, Object context)

如果不允許指定的安全上下文打開到指定主機和端口號的套接字連接,則拋出 SecurityException。

端口號 -1 表示調(diào)用方法正在嘗試確定指定主機名的 IP 地址。

如果 context 不是 AccessControlContext 的實例,則拋出 SecurityException。

否則,檢查端口號。 如果不等于 -1,則使用 SocketPermission(host+":"+port,"connect") 權限調(diào)用上下文的 checkPermission 方法。 如果端口等于 -1,則使用 SocketPermission(host,"resolve") 權限調(diào)用上下文的 checkPermission 方法。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkConnect。

參數(shù):

參數(shù)名稱 參數(shù)描述
host 要連接的主機名端口。
port 要連接的協(xié)議端口。
context 依賴于系統(tǒng)的安全上下文。

Throws:

Throw名稱 Throw描述
SecurityException 如果指定的安全上下文不是 AccessControlContext 的實例(例如,為 null),或者無權打開到指定主機和端口的套接字連接。
NullPointerException 如果主機參數(shù)為空。

checkListen

public void checkListen(int port)

如果不允許調(diào)用線程在指定的本地端口號上等待連接請求,則拋出 SecurityException。

此方法使用 SocketPermission("localhost:"+port,"listen") 調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的地方調(diào)用 super.checkListen。

參數(shù):

參數(shù)名稱 參數(shù)描述
port 本地端口。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有權限監(jiān)聽指定端口。

checkAccept

public void checkAccept(String host, int port)

如果不允許調(diào)用線程接受來自指定主機和端口號的套接字連接,則拋出 SecurityException。

該方法由ServerSocket 類的accept 方法為當前的安全管理器調(diào)用。

此方法使用 SocketPermission(host+":"+port,"accept") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkAccept。

參數(shù):

參數(shù)名稱 參數(shù)描述
host 套接字連接的主機名。
port 套接字連接的端口號。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有接受連接的權限。
NullPointerException 如果主機參數(shù)為空。

checkMulticast

public void checkMulticast(InetAddress maddr)

如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播,則拋出 SecurityException。

此方法使用 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkMulticast。

參數(shù):

參數(shù)名稱 參數(shù)描述
maddr 要使用的 Internet 組地址。

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播。
NullPointerException 如果地址參數(shù)為空。

checkMulticast

@Deprecated public void checkMulticast(InetAddress maddr, byte ttl)

已棄用。 改用#checkPermission(java.security.Permission)

如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播,則拋出 SecurityException。

此方法使用 java.net.SocketPermission(maddr.getHostAddress(), "accept,connect") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkMulticast。

參數(shù):

參數(shù)名稱 參數(shù)描述
maddr 要使用的 Internet 組地址。
ttl 使用中的值,如果是多播發(fā)送。 注意:此特定實現(xiàn)不使用 ttl 參數(shù)。

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許調(diào)用線程使用(加入/離開/發(fā)送/接收)IP 多播。
NullPointerException 如果地址參數(shù)為空。

checkPropertiesAccess

public void checkPropertiesAccess()

如果不允許調(diào)用線程訪問或修改系統(tǒng)屬性,則拋出 SecurityException。

此方法由 System 類的 getProperties 和 setProperties 方法使用。

此方法使用 PropertyPermission("*", "read,write") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkPropertiesAccess。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程無權訪問或修改系統(tǒng)屬性。

checkPropertyAccess

public void checkPropertyAccess(String key)

如果不允許調(diào)用線程訪問具有指定鍵名的系統(tǒng)屬性,則拋出 SecurityException。

此方法由 System 類的 getProperty 方法使用。

此方法使用 PropertyPermission(key, "read") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkPropertyAccess。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 系統(tǒng)屬性鍵。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問指定系統(tǒng)屬性的權限。
NullPointerException 如果關鍵參數(shù)為空。
IllegalArgumentException 如果鍵為空。

checkTopLevelWindow

@Deprecated public boolean checkTopLevelWindow(Object window)

已棄用。對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。此方法將在未來版本中更改以檢查權限 java.security.AllPermission。

如果不信任調(diào)用線程調(diào)出由 window 參數(shù)指示的頂級窗口,則返回 false。在這種情況下,調(diào)用者仍然可以決定顯示窗口,但窗口應該包含某種視覺警告。如果該方法返回 true,則可以在沒有任何特殊限制的情況下顯示窗口。

該方法以 AWTPermission("showWindowWithoutWarningBanner") 權限調(diào)用 checkPermission,如果沒有拋出 SecurityException,則返回 true,否則返回 false。在不包含 java.awt 包的 Java SE 子集配置文件的情況下,將調(diào)用 checkPermission 來檢查權限 java.security.AllPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會返回 false 的地方調(diào)用 super.checkTopLevelWindow,并且應該返回 super.checkTopLevelWindow 的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
window 正在創(chuàng)建的新窗口。

返回:

如果信任調(diào)用線程來建立頂級窗口,則為 true; 否則為 false。

Throws:

Throw名稱 Throw描述
NullPointerException 如果窗口參數(shù)為空。

checkPrintJobAccess

public void checkPrintJobAccess()

如果不允許調(diào)用線程發(fā)起打印作業(yè)請求,則拋出 SecurityException。

此方法使用 RuntimePermission("queuePrintJob") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkPrintJobAccess。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程無權發(fā)起打印作業(yè)請求。

checkSystemClipboardAccess

@Deprecated public void checkSystemClipboardAccess()

已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。

如果不允許調(diào)用線程訪問系統(tǒng)剪貼板,則引發(fā) SecurityException。

此方法使用 AWTPermission("accessClipboard") 權限調(diào)用 checkPermission。 在不包含 java.awt 包的 Java SE 子集配置文件的情況下,將調(diào)用 checkPermission 來檢查權限 java.security.AllPermission。

如果你重寫了這個方法,那么你應該調(diào)用 super.checkSystemClipboardAccess 在被重寫的方法通常會拋出異常的地方。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問系統(tǒng)剪貼板的權限。

checkAwtEventQueueAccess

@Deprecated public void checkAwtEventQueueAccess()

已棄用。 對 AWTPermission 的依賴對 Java 平臺的未來模塊化造成了障礙。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。

如果不允許調(diào)用線程訪問 AWT 事件隊列,則引發(fā) SecurityException。

此方法使用 AWTPermission("accessEventQueue") 權限調(diào)用 checkPermission。 在不包含 java.awt 包的 Java SE 子集配置文件的情況下,將調(diào)用 checkPermission 來檢查權限 java.security.AllPermission。

如果您覆蓋此方法,那么您應該調(diào)用 super.checkAwtEventQueueAccess,此時被覆蓋的方法通常會引發(fā)異常。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問 AWT 事件隊列的權限。

checkPackageAccess

public void checkPackageAccess(String pkg)

如果不允許調(diào)用線程訪問參數(shù)指定的包,則拋出 SecurityException。

該方法由類加載器的 loadClass 方法使用。

此方法首先通過從對 java.security.Security.getProperty("package.access") 的調(diào)用中獲取逗號分隔的列表來獲取受限包的列表,并檢查 pkg 是否以或等于任何受限包開頭 . 如果是,則使用 RuntimePermission("accessClassInPackage."+pkg) 權限調(diào)用 checkPermission。

如果此方法被覆蓋,則 super.checkPackageAccess 應作為被覆蓋方法的第一行調(diào)用。

參數(shù):

參數(shù)名稱 參數(shù)描述
pkg 包名。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有訪問指定包的權限。
NullPointerException 如果包名稱參數(shù)為空。

checkPackageDefinition

public void checkPackageDefinition(String pkg)

如果不允許調(diào)用線程在參數(shù)指定的包中定義類,則拋出 SecurityException。

該方法被某些類加載器的 loadClass 方法使用。

此方法首先通過從對 java.security.Security.getProperty("package.definition") 的調(diào)用中獲取逗號分隔的列表來獲取受限包的列表,并檢查 pkg 是否以任何受限包開頭或等于任何受限包 . 如果是這樣,則使用 RuntimePermission("defineClassInPackage."+pkg) 權限調(diào)用 checkPermission。

如果此方法被覆蓋,則 super.checkPackageDefinition 應作為被覆蓋方法的第一行調(diào)用。

參數(shù):

參數(shù)名稱 參數(shù)描述
pkg 包名。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有權限在指定包中定義類。

checkSetFactory

public void checkSetFactory()

如果不允許調(diào)用線程設置 ServerSocket 或 Socket 使用的套接字工廠或 URL 使用的流處理程序工廠,則拋出 SecurityException。

此方法使用 RuntimePermission("setFactory") 權限調(diào)用 checkPermission。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkSetFactory。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程無權指定套接字工廠或流處理程序工廠。

checkMemberAccess

@Deprecated public void checkMemberAccess(Class clazz, int which)

已棄用。 此方法依賴于調(diào)用者處于 4 的堆棧深度,這很容易出錯并且不能由運行時強制執(zhí)行。 此方法的用戶應改為直接調(diào)用 checkPermission(java.security.Permission)。 此方法將在未來版本中更改以檢查權限 java.security.AllPermission。

如果不允許調(diào)用線程訪問成員,則拋出 SecurityException。

默認策略是允許訪問 PUBLIC 成員,以及訪問與調(diào)用者具有相同類加載器的類。 在所有其他情況下,此方法使用 RuntimePermission("accessDeclaredMembers") 權限調(diào)用 checkPermission。

如果此方法被覆蓋,則無法調(diào)用 super.checkMemberAccess,因為 checkMemberAccess 的默認實現(xiàn)依賴于被檢查的代碼的堆棧深度為 4。

參數(shù):

參數(shù)名稱 參數(shù)描述
clazz 要在其上執(zhí)行反射的類。
which 訪問類型,公共或聲明。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用者沒有訪問成員的權限。
NullPointerException 如果 clazz 參數(shù)為空。

checkSecurityAccess

public void checkSecurityAccess(String target)

確定是否應授予或拒絕具有指定權限目標名稱的權限。

如果請求的權限被允許,則此方法安靜地返回。 如果被拒絕,則會引發(fā) SecurityException。

此方法為給定的權限目標名稱創(chuàng)建一個 SecurityPermission 對象,并使用它調(diào)用 checkPermission。

有關可能的權限目標名稱的列表,請參閱 SecurityPermission 的文檔。

如果你重寫了這個方法,那么你應該在被重寫的方法通常會拋出異常的時候調(diào)用 super.checkSecurityAccess。

參數(shù):

參數(shù)名稱 參數(shù)描述
target SecurityPermission 的目標名稱。

Throws:

Throw名稱 Throw描述
SecurityException 如果調(diào)用線程沒有請求訪問的權限。
NullPointerException 如果目標為null
IllegalArgumentException 如果目標為empty

getThreadGroup

public ThreadGroup getThreadGroup()

返回線程組,在該線程組中實例化在調(diào)用它時創(chuàng)建的任何新線程。 默認情況下,它返回當前線程的線程組。 這應該由特定的安全管理器覆蓋以返回適當?shù)木€程組。

返回:

將新線程實例化到的 ThreadGroup


標題名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSSecurityManager
網(wǎng)址分享:http://m.5511xx.com/article/cdgsicj.html