Rub*_*osa 11 java securitymanager
该文章有关Java安全说:
只要尝试执行危险操作,Java库中的代码就会查询安全管理器.
那么,这究竟意味着什么呢?比如说,如果我已经实现了自己的安全管理器并为整个JVM启用了它.现在,java运行时是否为每个java调用(如System.out.println()等)查询我的安全管理器,或者它只参考dangerous像System.exit(),文件操作等api调用?
编辑:让我澄清一下我的问题,
我不是在质疑安全管理员的可能性.我只是询问是否单独对危险的api进行了安全检查,或者是为每个方法调用进行了安全检查.在具有大量代码的应用程序中,哪种情况会导致性能大幅下降.
dog*_*ane 16
如果代码如此,它只会咨询SecurityManager.它不会为每一个操作做到这一点.
例如Runtime.exit,您会看到咨询SecurityManager:
public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExit(status);
}
Shutdown.exit(status);
}
Run Code Online (Sandbox Code Playgroud)
同样,在中File,您将看到大多数方法都参考SecurityManager.例:
public boolean canWrite() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(path);
}
return fs.checkAccess(this, FileSystem.ACCESS_WRITE);
}
Run Code Online (Sandbox Code Playgroud)
如果您正在编写可能"危险"的方法,那么您还应该咨询SecurityManager.
| 归档时间: |
|
| 查看次数: |
14846 次 |
| 最近记录: |