1,什么是Java安全管理器?
SecurityManager
在看java源码的过程中,经常会遇到如下一段代码:
SecurityManager s = System.getSecurityManager();
ThreadGroup group = (s != null) ?
s.getThreadGroup():Thread.currentThread().getThreadGroup()
或
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name);
}
要想了解它们有什么功能,就需要对Java安全管理器有一定的认识。
2,Java安全管理器的使用场景?
当运行未知的java程序时,该程序可能含有恶意代码,如删除系统文件等恶意操作,为了防止恶意代码对系统的破坏,需要对运行代码的权限进行控制,这时候就需要启用java安全管理器。
3,如何启用java安全管理器?
方式1:启动参数方式 (推荐方式)
-Djava.security.manager
若同时需要指定安全管理器配置文件的位置使用如下参数,默认的配置文件按在**$JAVA_HOME/jre/lib/security/java.policy**
-Djava.security.manager -Djava.security.policy="E:/java.policy"
虽然通过启动参数指定,本质上也是通过代码方式启动,但是方式更灵活。原理可查看启动类 sun.misc.Launcher类,有如下一段代码
public Launcher() {
Launcher.ExtClassLoader var1;
try {
var1 = Launcher.ExtClassLoader.getExtClassLoader();
} catch (IOException var10) {
throw new InternalError("Could not create extension class loader",</