首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java安全管理器-它检查什么?

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

Stack Overflow用户
提问于 2011-03-04 11:12:37
回答 3查看 17.7K关注 0票数 12

这个关于Java安全的文章说:

每当尝试进行危险操作时,Java库中的代码都会咨询Security。

那么,这到底意味着什么?比如说,如果我已经实现了自己的安全管理器并为整个JVM启用了它。现在,java运行时是为每个java调用(如System.out.println()等)咨询我的安全管理器,还是只为dangerous api调用(如System.exit()、文件操作等)提供咨询?

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

我不是在质疑安全经理的可能性。我只是问,安全检查是针对危险api的单独完成的,还是针对每个方法调用的完成的。这反过来会导致大量代码的应用程序的性能大幅下降。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-04 11:27:28

只有在代码这么说的情况下,它才会咨询SecurityManager。不是每一次手术都是这样的。

例如,在Runtime.exit中,您可以看到查询了SecurityManager:

代码语言:javascript
复制
public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
    security.checkExit(status);
}
Shutdown.exit(status);
}

类似地,在File中,您将看到大多数方法都参考了SecurityManager。示例:

代码语言:javascript
复制
public boolean canWrite() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
    security.checkWrite(path);
}
return fs.checkAccess(this, FileSystem.ACCESS_WRITE);
}

如果您正在编写一个可能“危险”的方法,那么您也应该咨询SecurityManager。

票数 17
EN

Stack Overflow用户

发布于 2011-03-04 11:24:26

使用安全管理器,您可以控制对以下内容的访问:

  1. 文件操作
  2. 反射设备
  3. 读/写IO
  4. 线程/线程组操作
  5. 套接字操作(侦听、接受等)
  6. 创建自己的类加载器的能力。

对于每一种情况,SecurityManager中都有一个check*()方法

要获得详尽的列表,请检查SecurityConstants中的常量

票数 2
EN

Stack Overflow用户

发布于 2011-03-04 11:24:16

安全管理器使用策略文件来查看哪些是允许的,哪些是不允许的。由此策略文件确定的“危险”操作在执行过程中被授予或拒绝。

您可以在这里找到有关Sun/Oracle JVM默认策略的更多详细信息:

http://download.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5192965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档