- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果我理解 AccessController.doPrivileged正确地说,不受信任的代码应该能够通过确实具有权限的中间方法调用需要权限的方法(例如System.getProperty()
)。 p>
这就引出了一个问题:什么时候应该使用 AccessController.doPrivileged()
?什么时候应该允许不受信任的代码通过中间方法调用特权代码?什么时候应该失败?
根据您的推理,请解释为什么始终允许创建 ClassLoader:http://findbugs.sourceforge.net/bugDescriptions.html#DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED
最佳答案
同意Suraj's answer ,但我想我会添加一个需要使用特权 block 的具体示例。
假设您已经构建了一个为可插拔模块提供大量服务的应用程序。因此,您的应用及其服务是受信任的代码。然而,可插拔模块不一定是受信任的,而是在它们自己的类加载器中加载(并且有自己的保护域)。
当可插拔模块调用服务时,您正在实现自定义安全检查(“可插拔模块 X 是否有权使用此服务”)。但服务本身可能需要一些核心 Java 权限(读取系统属性、写入文件等)。需要这些权限的代码包含在 doPrivileged()
中,因此来自不受信任的可插拔模块的权限不足会被有效地忽略 - 只有受信任的服务模块的权限适用。
关于java - 什么时候应该使用 AccessController.doPrivileged()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233761/
我试图弄清楚一些遗留代码在做什么。这条线到底在做什么,为什么我需要这种方式? String lineSeparator = (String) java.security.AccessControlle
确实,在(签名的)小程序中,只有当我的小程序与 JavaScript 通信时,我才需要使用 AccessController.doPrivileged() ? 最佳答案 没有。如果不受信任的小程序访问
我设法用以下代码设置了一个“ Java沙箱”: // #1 new File("xxx").exists(); // #2 PrivilegedExceptionAct
我有这段代码,将 JavaServer 附加到 RMIRegistry,这是在 PrivilegedAction 中完成的 //start javaengineserver
如果我理解 AccessController.doPrivileged正确地说,不受信任的代码应该能够通过确实具有权限的中间方法调用需要权限的方法(例如System.getProperty())。 p
我是 Java 安全方面的新手;有一个基本问题。 我目前的理解是: 每当您需要限制不受信任的代码可以执行的操作时,实现此目的的方法之一是使用自定义安全策略,并在 Subject.doAsPrivile
例如,如果我在小程序类中使用此代码,请在小程序沙箱中运行它 public void init() { try { class doInit implements Privile
我正在尝试调用文件选择器选项并获取文件名作为输入。但是我得到了 java AccessControlException。当我使用网络浏览器启动小程序时,这工作正常,但在尝试使用小程序查看器时抛出异常。
我试图禁止在 AccessController.doPriviliged() 方法中创建线程。下面的方法创建并运行线程。我用 -Djava.security.manager 运行它。根据此链接,如果未
我在小程序中有以下通过 JavaScript 调用的方法 public String getAString() { Object rc = AccessController.d
我正在弄清楚如何在没有权限的情况下运行外部代码(来自不同的 JAR),这样它就不会损害我自己的系统。我几乎可以正常工作了,但是我发现了一个奇怪的情况,即调用 System.exit(0) 仍然会杀死整
我是java新手。我想在 Eclipse IDE 中运行一个简单的 hello world 应用程序。 public class Hello { public static void main
我正在查看一个被大量从 JavaScript 调用的签名 Applet。显然,与直接从 Java 内部启动的任何线程相比,源自 JavaScript 的线程受到更严格的沙箱化处理。例如,如果 Java
我正在尝试使用 Silverlight 进行一些归档并从 Javascript 访问结果。 Java 小程序可以通过 AccessController.doPrivileged 方法轻松完成此操作,例
我是一名优秀的程序员,十分优秀!