gpt4 book ai didi

java - 沙盒 JSR-223

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:40 25 4
gpt4 key购买 nike

我正在尝试对 JSR-223 进行沙盒处理。具体来说,我不希望任何脚本访问我的任何类(class)。 (我听说 Rhino 可以使用 ClassShutter 做到这一点,但我想一般地这样做。即,对于 JSR-223 的所有脚本引擎)。

我首先尝试使用AccessController.doPrivileged 解决方案,by passing no permissions at all .它适用于大多数权限,但脚本仍然可以访问我所有的公共(public)类(它似乎忽略了“包访问”权限......?)。

found this .我的问题是:如何在脚本引擎上安装自定义 ClassLoader? (或者如果必须的话,如何全局替换 ClassLoader?)

最佳答案

ScriptEngineManager 有一个构造函数,它接受一个类加载器。类加载器用于加载脚本引擎实现。由于类继承了它们的类加载器,脚本引擎和它创建的任何对象也应该使用该类加载器。

该类加载器需要拒绝任何未列入白名单的类的存在。

最重要的是使用自定义 SecurityManager,这样您就可以根据正在使用的类加载器进行访问检查。

编辑:这是我在 Sandboxing Rhino in Java 上找到的一篇文章.其中大部分也适用于 JSR-223。 Sun 的实现是经过修改的 Rhino,因此可能存在一些差异。

关于java - 沙盒 JSR-223,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399505/

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