当前位置:  开发笔记 > 编程语言 > 正文

沙盒JSR-223

如何解决《沙盒JSR-223》经验,为你挑选了1个好方法。

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

我首先尝试使用该AccessController.doPrivileged解决方案,完全没有权限.它适用于大多数权限,但脚本仍然可以访问我的所有公共类(它似乎忽略"包访问"权限......?).

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



1> Devon_C_Mill..:

ScriptEngineManager有一个构造函数,它接受一个类加载器.类加载器用于加载脚本引擎实现.当类继承其类加载器时,脚本引擎及其创建的任何对象也应该使用该类加载器.

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

最后使用自定义SecurityManager,以便您可以对正在使用的类加载器进行访问检查.

编辑:这是我在Java中使用Sandboxing Rhino发现的一篇文章.其中大部分内容也适用于JSR-223.Sun的实现是Rhino的修改,因此可能存在一些差异.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有