Java SecurityManager 類



簡介

Java SecurityManager 類允許應用程式實現安全策略。它允許應用程式在執行可能不安全或敏感的操作之前,確定操作是什麼以及是否在允許執行該操作的安全上下文中嘗試該操作。應用程式可以允許或拒絕該操作。

類宣告

以下是java.lang.SecurityManager 類的宣告:

@Deprecated(since="17",
            forRemoval=true)
public class SecurityManager
   extends Object

注意 - Security Manager 已被棄用,並可能在將來的版本中被移除。Security Manager 沒有替代品。有關討論和替代方案,請參見 JEP 411

類建構函式

序號 建構函式及描述
1

SecurityManager()

這將構造一個新的 SecurityManager。

類方法

序號 方法及描述
1 void checkAccept(String host, int port)

如果呼叫執行緒不允許從指定的 host 和 port 接收套接字連線,則此方法將丟擲 SecurityException。

2 void checkAccess(Thread t)

如果呼叫執行緒不允許修改執行緒引數,則此方法將丟擲 SecurityException。

3 void checkAccess(ThreadGroup g)

如果呼叫執行緒不允許修改執行緒組引數,則此方法將丟擲 SecurityException。

4 void checkAwtEventQueueAccess()

如果呼叫執行緒不允許訪問 AWT 事件佇列,則此方法將丟擲 SecurityException。

5 void checkConnect(String host, int port)

如果呼叫執行緒不允許開啟到指定的 host 和 port 的套接字連線,則此方法將丟擲 SecurityException。

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

如果指定的 security context 不允許開啟到指定的 host 和 port 的套接字連線,則此方法將丟擲 SecurityException。

7 void checkCreateClassLoader()

如果呼叫執行緒不允許建立新的類載入器,則此方法將丟擲 SecurityException。

8 void checkDelete(String file)

如果呼叫執行緒不允許刪除指定的檔案,則此方法將丟擲 SecurityException。

9 void checkExec(String cmd)

如果呼叫執行緒不允許建立子程序,則此方法將丟擲 SecurityException。

10 void checkExit(int status)

如果呼叫執行緒不允許使 Java 虛擬機器以指定的 status code 停止,則此方法將丟擲 SecurityException。

11 void checkLink(String lib)

如果呼叫執行緒不允許動態連結由字串引數 file 指定的庫程式碼,則此方法將丟擲 SecurityException。

12 void checkListen(int port)

如果呼叫執行緒不允許在指定的本地埠號上等待連線請求,則此方法將丟擲 SecurityException。

13 void checkMemberAccess(Class<?> clazz, int which)

如果呼叫執行緒不允許訪問成員,則此方法將丟擲 SecurityException。

14 void checkMulticast(InetAddress maddr)

如果呼叫執行緒不允許使用 (加入/離開/傳送/接收) IP 多播,則此方法將丟擲 SecurityException。

15 void checkPackageAccess(String pkg)

如果呼叫執行緒不允許訪問引數指定的包,則此方法將丟擲 SecurityException。

16 void checkPackageDefinition(String pkg)

如果呼叫執行緒不允許在引數指定的包中定義類,則此方法將丟擲 SecurityException。

17 void checkPermission(Permission perm)

如果根據當前有效的安全策略不允許給定的許可權指定的請求訪問,則此方法將丟擲 SecurityException。

18 void checkPermission(Permission perm, Object context)

如果指定的 security context 被拒絕訪問給定許可權指定的資源,則此方法將丟擲 SecurityException。

19 void checkPrintJobAccess()

如果呼叫執行緒不允許啟動列印作業請求,則此方法將丟擲 SecurityException。

20 void checkPropertiesAccess()

如果呼叫執行緒不允許訪問或修改系統屬性,則此方法將丟擲 SecurityException。

21 void checkPropertyAccess(String key)

如果呼叫執行緒不允許訪問具有指定鍵名的系統屬性,則此方法將丟擲 SecurityException。

22 void checkRead(FileDescriptor fd)

如果呼叫執行緒不允許從指定的檔案描述符讀取,則此方法將丟擲 SecurityException。

23 void checkRead(String file)

如果呼叫執行緒不允許讀取字串引數指定的檔案,則此方法將丟擲 SecurityException。

24 void checkRead(String file, Object context)

如果指定的 security context 不允許讀取字串引數指定的檔案,則此方法將丟擲 SecurityException。

25 void checkSecurityAccess(String target)

此方法確定是否應授予或拒絕具有指定許可權目標名稱的許可權。

26 void checkSetFactory()

如果呼叫執行緒不允許設定 ServerSocket 或 Socket 使用的套接字工廠,或 URL 使用的流處理程式工廠,則此方法將丟擲 SecurityException。

27 void checkSystemClipboardAccess()

如果呼叫執行緒不允許訪問系統剪貼簿,則此方法將丟擲 SecurityException。

28 boolean checkTopLevelWindow(Object window)

如果呼叫執行緒不受信任以顯示 window 引數指示的頂級視窗,則此方法返回 false。

29 void checkWrite(FileDescriptor fd)

如果呼叫執行緒不允許寫入指定的檔案描述符,則此方法將丟擲 SecurityException。

30 void checkWrite(String file)

如果呼叫執行緒不允許寫入字串引數指定的檔案,則此方法將丟擲 SecurityException。

31 protected Class[] getClassContext()

此方法返回當前執行堆疊作為類的陣列。

32 Object getSecurityContext()

此方法建立一個封裝當前執行環境的物件。

33 ThreadGroup getThreadGroup()

此方法返回在呼叫此方法時建立任何新執行緒的執行緒組。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

示例

我們的示例要求阻止每個命令的許可權。設定了一個新的策略檔案,該檔案只允許建立和設定我們的 Security Manager。該檔案位於 C:/java.policy,幷包含以下文字:

grant {
   permission java.lang.RuntimePermission "setSecurityManager";
   permission java.lang.RuntimePermission "createSecurityManager";
   permission java.lang.RuntimePermission "usePolicy";
};

以下示例顯示了 lang.SecurityManager.checkAccept() 方法的用法。

package com.tutorialspoint;

public class SecurityManagerDemo {

   public static void main(String[] args) {

      // set the policy file as the system securuty policy
      System.setProperty("java.security.policy", "file:/C:/java.policy");

      // create a security manager
      SecurityManager sm = new SecurityManager();

      // set the system security manager
      System.setSecurityManager(sm);

      // check if accepting socket connection is enabled
      sm.checkAccept("www.tutorialspoint.com", 8080);

      // print a message if we passed the check
      System.out.println("Allowed!");
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Exception in thread "main" java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release
	at java.base/java.lang.System.setSecurityManager(System.java:430)
	at com.tutorialspoint.SecurityManagerDemo.main(SecurityManagerDemo.java:14)
廣告
© . All rights reserved.