gpt4 book ai didi

java - 有没有一种简单的方法来调查是否确实需要 AccessController.doPrivileged() ?

转载 作者:行者123 更新时间:2023-12-01 14:14:12 25 4
gpt4 key购买 nike

我有这段代码,将 JavaServer 附加到 RMIRegistry,这是在 PrivilegedAction 中完成的

        //start javaengineserver
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
try
{
startServer(port, getSession());
} catch (RmiException e)
{
e.printStackTrace();
AWTSwingErrorDialog.show(e, "Error while attaching JavaEngineServer to rmiregistry.exe");
}
return null;
}
});

我发现了一些关于doPrivileged方法的其他问题,他们都说有一些命令需要额外的权限,比如获取环境变量。

所以我把代码扔到了 startServer(port, session) 方法后面,我没有找到任何看起来需要额外权限的东西,但是有没有办法确认这一点,其他而不是手动测试所有用法和功能?

谢谢。

最佳答案

我认为没有(可靠的)简单方法。但有一种不可靠的方法:暂时用仅调用 startServer 的代码替换该代码,并尝试在安全沙箱中运行它。

我怀疑需要 doPrivileged 调用。具有该名称和 port 参数的方法可能会尝试在 ServerSocket 上创建/绑定(bind)/监听。如果 SecurityManager.checkListen 方法不允许该操作,后者将会失败......这在典型的沙箱中是不会执行的。 (我们通常不希望不受信任的代码能够启动隐形网络服务......)

关于java - 有没有一种简单的方法来调查是否确实需要 AccessController.doPrivileged() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271064/

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