gpt4 book ai didi

java - 什么时候应该使用 AccessController.doPrivileged()?

转载 作者:IT老高 更新时间:2023-10-28 20:55:50 26 4
gpt4 key购买 nike

如果我理解 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com