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)中。

posted @ 2018-02-03 22:23  假程序猿  阅读(4446)  评论(0编辑  收藏  举报