这个关于
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); }
原文地址:https://www.jb51.cc/java/123750.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。