沙箱 JSR-223

2023-11-24

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

我首先尝试使用AccessController.doPrivileged解决方案,根本不传递任何权限。它适用于大多数权限,但脚本仍然可以访问我的所有公共类(它似乎忽略“包访问”权限......?)。

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


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

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

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

Edit:这是我在上面找到的一篇文章Java 中的沙箱 Rhino。其中大部分内容也应适用于 JSR-223。 Sun的实现是Rhino的修改,因此可能存在一些差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

沙箱 JSR-223 的相关文章

随机推荐

  • JAXB 创建上下文和编组器成本

    这个问题有点理论化 创建 JAXB 上下文 编组器和反编组器的成本是多少 我发现我的代码可以受益于为所有编组操作保留相同的 JAXB 上下文和可能相同的编组器 而不是在每个编组上创建上下文和编组器 那么创建 JAXB 上下文和编组器 反编组
  • python matplotlib条形图添加条形标题[重复]

    这个问题在这里已经有答案了 我正在使用 matplotlib 和 python 2 7 我需要创建一个简单的 pyplot 条形图 对于每个条形图 我需要在其顶部添加它的 y 值 我正在使用以下代码创建条形图 import matplotl
  • 使用 Ajax 将表单数据发送到控制器操作

    我在 MVC3 中有一个页面 带有一个链接 Ajax ActionLink 当用户单击它时 它会调用控制器的操作 并将结果插入到 div 中 并进行替换 代码如下所示 Ajax ImageActionLink Images btn shar
  • 使用java从字符串中删除重复的字母

    我需要使用java中的正则表达式操作从字符串中删除重复的字母 例如 王子 gt 王子 苹果 gt 苹果 简单的解决方案 删除重复字符 像这样 final String str APPLEE String replaced str repla
  • 使用 AJAX 上传文件而不使用 FormData (IE9)

    In IE9 FormData不支持 这使得使用上传文件XMLHttpRequest不那么琐碎了 这可以做到吗 我已经看到提到了 iFrame 虽然我不反对编写一些繁琐的代码 但我对如何实现这一目标感到困惑 有很多资源讨论上传到 iFram
  • 使用头文件有哪些优点和缺点? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我对 Java C Scala 等编程语言以及 C C Objective C 等较低级编程语言有一些经验 我的观察是 低级语言尝试将头文件和实现文件分开 而其他高级编程语言从不将其分开
  • 在单元测试方法中显示 Windows 窗体

    我刚刚在 Visual Studio NET 中发现了单元测试项目 并使用测试方法来设置我开发的全局代码的示例 一些全局方法涉及显示可重用的对话框 例如日期选择器和输入框 问题是 有时表格会显示 有时则不会 我认为这与模态有关 因为我有一个
  • Kotlin:“return@”是什么意思?

    我在我的一个项目中使用 RxJava 我使用 Android Studio 插件和地图之一将我的类之一转换为 KotlinflatMaplambda java 中的 Func1 中间体返回如下所示 Func1 我不懂这啥意思 somethi
  • 将两个数据框逐个元素粘贴在一起

    我需要逐个元素粘贴两个数据帧的内容以输入到另一个程序 我有一个平均值数据框和一个平均值标准误差数据框 我尝试使用 R Paste 函数 但它似乎无法处理数据框 使用向量时 似乎将第一个向量的所有元素连接到一个字符串中 并将第二个向量的所有元
  • Javascript 中使用双括号调用函数

    当我调用函数时hi 带双括号的函数显示hi输出 它也会给出错误 说hi不是函数 使用的意义是什么 带函数名 如果出现以下情况 双括号会很有用 hi返回了一个函数而不是它的名称 就像 function hi return hello hi 这
  • 查找包含另一个字符串中一个字符串的所有字符的最小窗口的长度

    最近我接受了采访 我做得不好 因为我被以下问题卡住了 假设给出一个序列 A D C B D A B C D A C D 搜索顺序如下 A C D 任务是找到给定字符串中的开始和结束索引 该索引包含保留顺序的搜索字符串的所有字符 Output
  • 如何重载打印函数来扩展其功能?

    我想知道是否有内置功能print可以被覆盖 以便以下语句将同时写入控制台和文件 print test0 test1 test2 sep n 另外 我想知道是否可以修改内置的源代码print功能 使用装饰器 简化示例 def my decor
  • Android 编辑文本 - 光标停留在起始位置

    我在我的项目中使用编辑文本 问题是 每当我在文本框中输入任何内容时 它都会显示出来 但无论我输入多少个字符 光标都不会从其起始位置移动 此外 我无法通过单击文本框中的任何特定字符来移动 我的包含编辑文本的 xml 文件是这样的
  • 如何知道 PHAsset 是否已被修改?

    更具体地说 你如何知道一个PHAsset标的资产的当前版本是否与原始版本不同 我的用户只需在必要时在当前资产或原始资产之间进行选择 然后我需要他们的答案PHImageRequestOptions version 从 iOS 16 开始 PH
  • 如何打开 Chrome DevTools 命令菜单?

    人们如何访问下面屏幕截图中的命令菜单 If you re unable to use keyboard shortcut Cmd Ctrl Shift P you can also click the three stacked dots
  • WPF 中的 x:Reference 何时解析?为什么 XAML 元素顺序会影响它?

    x 在 XAML 中重新排列元素后 无法解析引用 这里我展示一个工作代码 只需移动 DataGrid 元素 使其位于按钮元素之后 ContextMenu 中的 MenuItem 和 Button IsEnabled 中的 MultiBind
  • QTreeWidget 通过拖动重新排序子项

    我有一个 QTreeWidget 它仅显示单个根节点和一级子节点 我需要允许子节点的重新排序 他们绝不能被重新养育 这就是我在 QTreeWidget 中启用项目拖动的方法 ui gt levelElements gt setSelecti
  • 将 RGB 转换为光频率

    是否可以从 RGB 表示中获取颜色的光频率 我发现了相反的过程 1 但我不知道这种方式是否可行 1 http www fourmilab ch documents specrend AFAIK 没有直接的答案 因为多个波长可以组合起来给出相
  • 将 RGB 转换为 RGBA 白色

    我有一个十六进制颜色 例如 F4F8FB or rgb 244 248 251 我想转换成尽可能透明rgba 颜色 显示在白色上时 合理 我正在寻找一种算法 或者至少是一种如何做到这一点的算法的想法 例如 rgb 128 128 255 g
  • 沙箱 JSR-223

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