JavaTM 2 Platform
Standard Ed. 6

java.lang
類別 RuntimePermission

java.lang.Object
  繼承者 java.security.Permission
      繼承者 java.security.BasicPermission
          繼承者 java.lang.RuntimePermission
所有已實作的介面:
Serializable, Guard

public final class RuntimePermission
extends BasicPermission

該類別用於運行時權限。RuntimePermission 套件含一個名稱(也稱為“目標名稱”),但不包含操作列表;您可以有或沒有指定的權限。

目標名稱是運行時權限的名稱(參見下面內容)。命名約定遵守分層屬性命名約定。另外,名稱的末尾可能出現一個星號,星號前有一個“.”(也可能只有一個星號),用來表示通配符。例如:“loadLibrary.*”或“*”是有效的,而“*loadLibrary”或“a*b”則是無效的。

下表列出了所有可能的 RuntimePermission 目標名稱,並提供了權限所允許的操作的簡要說明,還討論了授予程式碼該權限的風險。

權限目標名稱 權限所允許的操作 允許此權限所帶來的風險
createClassLoader 創建類別載入器 授予該權限極其危險。能夠實例化自己的類別載入器的惡意應用程序可能會在系統中裝載自己的惡意類別。這些新載入的類別可能被類別載入器置於任意保護域中,從而自動將該域的權限授予這些類別。
getClassLoader 類別載入器的獲取(即調用類別的類別載入器) 這將授予攻擊者得到具體類別的載入器的權限。這很危險,由於攻擊者能夠存取類別的類別載入器,所以攻擊者能夠載入其他可用於該類別載入器的類別。通常攻擊者不具備這些類別的存取權限。
setContextClassLoader 執行緒使用的上下文類別載入器的設置 在需要尋找可能不存在於系統類別載入器中的資源時,系統程式碼和擴展部分會使用上下文類別載入器。授予 setContextClassLoader 權限將允許程式碼改變特定執行緒(包括系統執行緒)使用的上下文類別載入器。
enableContextClassLoaderOverride 執行緒上下文類別載入器方法的子類別實作 在需要尋找可能不存在於系統類別載入器中的資源時,系統程式碼和擴展部分會使用上下文類別載入器。授予 enableContextClassLoaderOverride 權限將允許執行緒的子類別覆寫某些方法,這些方法用於得到或設置特定執行緒的上下文類別載入器。
setSecurityManager 設置安全管理器(可能會替換現有的) 安全管理器是允許應用程序實作安全策略的類別。授予 setSecurityManager 權限將通過安裝一個不同的、可能限制更少的安全管理器,來允許程式碼改變所用的安全管理器,因此可跳過原有安全管理器所強制執行的某些檢查。
createSecurityManager 創建新的安全管理器 授予程式碼對受保護的、敏感方法的存取權,可能會洩露有關其他類別或執行堆疊(stack)空間的資訊。
getenv.{variable name} 讀取指定環境變數的值 此權限允許程式碼讀取特定環境變數的值或確定它是否存在。如果該變數含有機密資料,則這項授權是很危險的。
exitVM.{exit status} 暫停帶有指定退出狀態的 Java 虛擬機器 此權限允許攻擊者通過自動強制暫停虛擬機器來發起一次拒絕服務攻擊。注意:自動為那些從應用程序類別路徑載入的全部程式碼授予 "exitVM.*" 權限,從而使這些應用程序能夠自行中止。此外,"exitVM" 權限等於 "exitVM.*"。
shutdownHooks 虛擬機器關閉鉤子 (hook) 的註冊與取消 此權限允許攻擊者註冊一個妨礙虛擬機器正常關閉的惡意關閉鉤子 (hook)。
setFactory 設置由 ServerSocket 或 Socket 使用的Socket處理器,或 URL 使用的串流處理程序處理器 此權限允許程式碼設置Socket、伺服器Socket、串流處理程序或 RMI Socket處理器的實際實作。攻擊者可能設置錯誤的實作,從而破壞資料串流。
setIO System.out、System.in 和 System.err 的設置 此權限允許改變標準系統串流的值。攻擊者可以改變 System.in 來監視和竊取使用者輸入,或將 System.err 設置為 "null" OutputStream,從而隱藏發送到 System.err 的所有錯誤資訊。
modifyThread 修改執行緒,例如通過調用執行緒的 interruptstopsuspendresumesetDaemonsetPrioritysetNamesetUncaughtExceptionHandler 方法 此權限允許攻擊者修改系統中任意執行緒的行為。
stopThread 通過調用執行緒的 stop 方法停止執行緒 如果系統已授予程式碼存取該執行緒的權限,則此權限允許程式碼停止系統中的任何執行緒。此權限會造成一定的危險,因為該程式碼可能通過中止現有的執行緒來破壞系統。
modifyThreadGroup 修改執行緒組,例如通過調用 ThreadGroup 的 destroygetParentresumesetDaemonsetMaxPrioritystopsuspend 方法 此權限允許攻擊者創建執行緒組並設置它們的運行優先級。
getProtectionDomain 獲取類別的 ProtectionDomain 此權限允許程式碼獲得特定程式碼源的安全策略資訊。雖然獲得安全策略資訊並不足以危及系統安全,但這確實會給攻擊者提供了能夠更好地定位攻擊目標的其他資訊,例如本地檔案名稱等。
getFileSystemAttributes 獲取檔案系統屬性 此權限允許程式碼獲得檔案系統資訊(如調用者可用的磁碟使用量或磁碟空間)。這存在潛在危險,因為它洩露了關於系統硬體配置的資訊以及一些關於調用者寫入檔案特權的資訊。
readFileDescriptor 讀取檔案描述符 此權限允許程式碼讀取與檔案描述符讀取相關的特定檔案。如果該檔案包含機密資料,則此操作非常危險。
writeFileDescriptor 寫入檔案描述符 此權限允許程式碼寫入與描述符相關的特定檔案。此權限很危險,因為它可能允許惡意程式碼傳播病毒,或者至少也會填滿整個磁碟。
loadLibrary.{資源庫名} 動態連接指定的資源庫 允許 applet 具有載入本機程式碼資源庫的權限是危險的,因為 Java 安全架構並未設計成可以防止惡意行為,並且也無法在本機程式碼的級別上防止惡意行為。
accessClassInPackage.{包名} 當類別載入器調用 SecurityManager 的checkPackageAccess 方法時,通過類別載入器的 loadClass 方法存取指定的套件 此權限允許程式碼存取它們通常無法存取的那些包中的類別。惡意程式碼可能利用這些類別說明它們實作破壞系統安全的企圖。
defineClassInPackage.{包名} 當類別載入器調用 SecurityManager 的 checkPackageDefinition 方法時,通過類別載入器的 defineClass 方法定義指定的套件中的類別。 此權限允許程式碼在特定包中定義類別。這樣做很危險,因為具有此權限的惡意程式碼可能在受信任的套件中定義惡意類別,比如 java.securityjava.lang
accessDeclaredMembers 存取類別的已宣告成員 此權限允許程式碼查詢類別的公共、受保護、預設(包)存取和私有的欄位和/或方法。儘管程式碼可以存取私有和受保護欄位和方法名稱,但它不能存取私有/受保護欄位資料並且不能調用任何私有方法。此外,惡意程式碼可能使用該資訊來更好地定位攻擊目標。而且,它可以調用類別中的任意公共方法和/或存取公共欄位。如果程式碼不能用這些方法和欄位將物件強制轉換為類別/介面,那麼它通常無法調用這些方法和/或存取該欄位,而這可能很危險。
queuePrintJob 列印作業請求的開始 這可能向印表機輸出敏感資訊,或者只是浪費紙張。
getStackTrace 獲取另一個執行緒的堆疊(stack)空間追蹤資訊。 此權限允許獲取另一個執行緒的堆疊(stack)空間追蹤資訊。此操作可能允許執行惡意程式碼監視執行緒共時現應用程序中的弱點。
setDefaultUncaughtExceptionHandler 在執行緒由於未捕獲的異常而突然終止時,設置將要使用的預設處理程序 此權限允許攻擊者註冊惡意的未捕獲異常處理程序,可能會妨礙執行緒的終止
Preferences 表示得到 java.util.prefs.Preferences 的存取權所需的權限。java.util.prefs.Preferences 實作了使用者或系統的根,這反過來又允許獲取或更新 Preferences 持久內部存儲中的操作。 如果運行此程式碼的使用者具有足夠的讀/寫內部存儲的 OS 特權,則此權限就允許使用者讀/寫優先級內部存儲。實際的內部存儲可能位於傳統的檔案系統目錄中或註冊表中,這取決於平臺 OS。

另請參見:
BasicPermission, Permission, Permissions, PermissionCollection, SecurityManager, 序列化表格

建構子摘要
RuntimePermission(String name)
          創建具有指定名稱的新 RuntimePermission。
RuntimePermission(String name, String actions)
          創建具有指定名稱的新 RuntimePermission 物件。
 
方法摘要
 
從類別 java.security.BasicPermission 繼承的方法
equals, getActions, hashCode, implies, newPermissionCollection
 
從類別 java.security.Permission 繼承的方法
checkGuard, getName, toString
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

RuntimePermission

public RuntimePermission(String name)
創建具有指定名稱的新 RuntimePermission。此名稱是 RuntimePermission 的符號名,比如“exit”、“setFactory”等。名稱的末尾可能出現一個星號,星號前有一個“.”(也可能只有一個星號),用來表示通配符。

參數:
name - RuntimePermission 的名稱。
拋出:
NullPointerException - 如果 namenull
IllegalArgumentException - 如果 name 為空。

RuntimePermission

public RuntimePermission(String name,
                         String actions)
創建具有指定名稱的新 RuntimePermission 物件。此名稱是 RuntimePermission 的符號名,而目前沒有使用操作 String,所以它應該是 null。

參數:
name - RuntimePermission 的名稱。
actions - 應該為 null。
拋出:
NullPointerException - 如果 namenull
IllegalArgumentException - 如果 name 為空。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only