使用场景
安全管理器(SecurityManager)通过运行阶段检查和访问授权,以实施应用所需要的安全策略,从而保护资源免受恶意操作的攻击(注意是应用级安全管理)。实际上,安全管理器根据Java安全策略稳健决定将那些组权限授予类。然而,当不可信的类和第三方应用使用JVM时,Java安全管理器将使用与JVM相关的安全策略来识别恶意操作。在很多情况下,威胁模型不包含运行于JVM中的恶意代码,此时Java安全管理器便不是必需的。当安全管理器检测到违反安全策略的操作时,JVM将引发AccessControlException或SecurityException异常。
实践
JVM启动应用,默认不使能安全管理,安全管理器应用为null。如下验证:
public class SecurityStart {
public static void main(String[] args){
System.out.println(System.getSecurityManager());
}
}
应用使用安全管理器有两种方式,一种是在JVM启动时通过参数指定安全管理器使能;另一种在应用代码中通过System.setSecurityManager指定安全管理器。
方式一:
在启动应用时,添加如下参数:
-Djava.security.manager
此时在便使能了安全管理器,安全管理器不为null。验证如下:
public