gpt4 book ai didi

javascript - 在 java 中安全运行 javascript 代码

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:14:23 25 4
gpt4 key购买 nike

如果这个标题不清楚,我很抱歉,因为我不知道所有的术语,所以请多多包涵。

所以我试图创建一个受控环境来在 Java 应用程序中运行任何 JavaScript 代码。注意:代码是由用户创建的,因此我必须阻止/阻止专门尝试访问/修改不应访问的 java 变量的代码。 (最好通过抛出编译错误来获得用户反馈)

编辑 1:顺便说一句,我尝试使用 Rhino 和 Nashorn。

这是一个简单的例子。

public class ScriptRunner{
public Foo foo=new Foo();
//this is not supposed to be accessed by the script
public int money=0;

public Object run(){
return compiler.compile(STRING START (obtained from a file)

function main(someObject){
//this is not allowed
someObject.money=10000000000000000000000;
//or this
var someBlacklistedJavaObject=.....
someBlacklistedJavaObject.someFuncton();

//but this is allowed
someObject.foo.name="Bob";
return someObject.foo.someFunction();
}

STRING END).run("main",this);
}

}

我也不确定这是否是可能的解决方案之一,但我不能使用内置的 Java 安全类,因为一些无法访问的代码实现它并且不允许将安全对象设置为其他任何东西。

我想到的是,一个简单的实现是在某个包中创建包装器 Java 类。比检查脚本中的 java 对象是否没有该路径并抛出错误。但问题是我不知道该怎么做。

这是我正在尝试做的事情的简单可视化。

编辑 2:希望保持较低的 Java 兼容性配置文件,但这不是 100% 必要的。

最佳答案

使用 ClassFilter使用 Nashorn(注意:需要 Java >= 1.8.0_40)

关于javascript - 在 java 中安全运行 javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38464733/

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