gpt4 book ai didi

java - 是否可以限制 Java 应用程序中允许的 JRuby 命令?

转载 作者:行者123 更新时间:2023-11-30 06:26:55 27 4
gpt4 key购买 nike

我在我的 Java 应用程序中使用 JRuby 来允许用户运行他们的脚本。应用程序正常功能所需的操作集并不大。脚本应该控制Java代码中的一些变量,并在执行过程中改变流程。

所以我想有机会限制允许的操作数。比方说,我不希望用户有权访问文件系统。

f = File.new("myfile.txt", "w") 
f.puts( "Hello!" )
f.close

这应该被禁止。

我怎样才能做这样的设置?我唯一的想法是在启动前解析用户脚本,并将脚本与允许操作的白名单进行比较。

最佳答案

您应该做的是创建一个允许命令的白名单。如果发现脚本包含不在白名单中的命令,则需要拒绝整个脚本。正如 Andrew Thompson 指出的那样,安全经理是一个很好的额外层,但它并不是安全分层的终点。我不认为在沙盒小程序中运行真的会给你带来那么多,因为你仍然必须确定脚本是否有效。

白名单示例

通常,当您生成白名单时,您希望用户能够选择的选项/命令数量有限,其余的将被丢弃。您将创建一些枚举或最终数据结构(以最大限度地减少其在运行时被恶意程序修改的能力)。如果你希望用户只能选择调用你的函数 foo 而不是 bar 你可以写这样的东西,这是完全原始的但说明了这个概念:

class WhiteList  
{
allowedCommands = ["foo"];
}

在你的主要部分是这样的:

class Main  
{
for(Command command in userInput)
{
if(command not in allowedCommands)
{
log security message;
continue/break
}
}
}

关于java - 是否可以限制 Java 应用程序中允许的 JRuby 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13882091/

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