关于Java安全性的这篇文章说:
每当要进行危险的操作时,Java库中的代码都会向安全管理器咨询。
那么,这到底是什么意思?说,如果我已经实现了自己的安全管理器并为整个JVM启用了它。现在,java运行时是否针对每个Java调用(例如System.out.println()等)咨询我的securitymanager,还是仅针对dangerous
诸如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。
即使我在Mule EE上运行,Mule Security Manager依赖性也没有得到解决。代码如下: http://www.mulesoft.org/schema/mule/spring-security http://www.mulesoft.org/schema/mule/spring-security/current/mule-spring-security.xsd http://www
我不太精通java安全管理,因此想确认我的理解: 我有一个java进程,它随机停止(关闭钩子运行),即使没有人杀死它的痕迹。结果我决定安装一个安全管理器,并覆盖,以确保停止的原因不是调用的东西。基本上我是这样写的: 我希望我的程序能像往常一样运行,唯一的变化是,如果系统崩溃,堆栈跟踪将被转储。调用了exit()。我发现事实并非如此。它无法从以下安全异常开始: SecurityManager似乎没有
通过系统内置规则,将匹配规则的安全性较低的资源扫描出来并按照建议进行处理,从而提高系统安全性的目的。 建议列表 建议列表显示所有匹配优化建议规则的资源列表,用户可根据建议对资源进行处理。 忽略列表 忽略列表显示不需要处理的资源或一类规则建议。 规则配置 规则配置即根据系统内影响资源安全的条件设置相应的规则,如安全组的规则设置等,当资源匹配规则则表示资源的安全性较低,需要用户进行处理等。
问题内容: 您是否偶然知道为什么Java Security Manager不禁止创建新线程或启动它们的解释?新的FileWriter在安全管理器下,但是new Thread()和threadInstance.start()都不是uneder安全管理器,可以调用。 禁止它有用吗? 实施起来会很难吗? 还是创建和启动新线程并不能禁止它? 问题答案: 在Thread构造函数中执行访问检查,以查看调用方是
问题内容: 按照此链接 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0333h/Chdfjdgi.html 下 系统启动顺序… 对分区检查器进行编程,以分配可用于非安全OS的物理内存。 什么是分区检查器?它是一个有寄存器的子系统吗,它的编程模型是什么? 问题答案: 什么是分区检查器? 它超出了CPU 的 TrustZ
问题内容: 嗨,我有RMI应用程序,现在我尝试从客户端在服务器上调用一些方法。我有以下代码: 服务器已正确加载,但是在尝试致电时出现以下错误: 我已将策略文件添加为VM参数,如下所示: 它一直在说关于禁用类加载的东西,所以我想问题就在那儿……谢谢! 问题答案: 远程类加载可能很棘手。 原始帖子不包含有关代码库的任何信息。客户端的安全配置可能正确,但是无法访问远程代码。客户端直接从“代码库”中加载类