Java安全管理器 – 它检查什么?

这个关于 Java安全性的 article说:

Code in the Java library consults the
Security Manager whenever a dangerous
operation is about to be attempted.

那么这是什么意思呢?说,如果我实现了我自己的安全管理员,并为整个JVM启用它.现在,java运行时是否为每个java调用(如System.out.println()等)咨询我的安全管理员),或者只咨询像System.exit(),文件操作等危险的api调用

编辑:让我澄清一下我的问题,

我不是质疑安全主管的可能性.我只是问是否安全检查是为危险的api单独完成的,或者是为每个方法调用完成.在大量代码的应用程序的情况下,哪个内部会导致巨大的性能下降.

解决方法

如果代码说明,它将仅查询SecurityManager.它不会为每一个操作做.

例如在Runtime.exit中,您将看到SecurityManager被查阅:

public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
    security.checkExit(status);
}
Shutdown.exit(status);
}

同样,在File中,您将看到大多数方法都可以参考SecurityManager.例:

public boolean canWrite() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
    security.checkWrite(path);
}
return fs.checkAccess(this,FileSystem.ACCESS_WRITE);
}

如果您正在编写可能是“危险”的方法,那么您还应该咨询SecurityManager.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...