SecurityManager入門


java安全管理器SecurityManager入門

SecurityManager

 

 每個Java應用都可以有自己的安全管理器,它是防范惡意攻擊的主要安全衛士。

安全管理器通過執行運行階段檢查和訪問授權,以實施應用所需的安全策略,從而保護資源免受惡意操作的攻擊。

實際上,安全管理器根據Java安全策略文件決定將哪組權限授予類。

然而,當不可信的類和第三方應用使用JVM時,Java安全管理器將使用與JVM相關的安全策略來識別惡意操作。

在很多情況下,威脅模型不包含運行於JVM中的惡意代碼,此時Java安全管理器便不是必需的。

當安全管理器檢測到違反安全策略的操作時,JVM將引發AccessControlException或SecurityException。

 

策略(Policy)
類裝載器用Policy對象幫助它們決定,把一段代碼導入虛擬機時應該給它們什么樣的權限. 任何時候,每一個應用程序都只有一個Policy對象.

保護域(ProtectionDomain)

當類裝載器將類型裝入java虛擬機時,它們將為每一個類型指派一個保護域,保護域定義了授予
一段特定的代碼的所有權限.裝載入java虛擬機的每一個類型都屬於一個且僅屬於一個保護域.

 

當運行未知的Java程序的時候,該程序可能有惡意代碼(刪除系統文件、重啟系統等),
為了防止運行惡意代碼對系統產生影響,需要對運行的代碼的權限進行控制,這時候就要啟用Java安全管理器。

默認的安全管理器配置文件是 $JAVA_HOME/jre/lib/security/java.policy

 

啟動安全管理有兩種方式,建議使用啟動參數方式。

1 啟動參數方式

  啟動程序的時候通過附加參數啟動安全管理器:

-Djava.security.manager

  若要同時指定配置文件的位置那么示例如下:

-Djava.security.manager -Djava.security.policy="E:/java.policy"

2 編碼方式啟動

  也可以通過編碼方式啟動,不過不建議:

System.setSecurityManager(new SecurityManager());

不過參數啟動使用靈活,源碼在類(sun.misc.Launcher)中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM