gpt4 book ai didi

java - 为 JVM 插件寻找一个安全的 Sandbox API

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:15 29 4
gpt4 key购买 nike

<分区>

当您有一个应用程序服务器,并且您想在其中运行第三方插件时,您可以使用限制性安全管理器来阻止它们执行诸如 System.exit() 之类的操作,但这只是故事的一半。那些不受信任的插件仍然可以进入无限循环,或者在你有时间眨眼之前吃掉所有的空闲堆。 Thread.stop() 已被弃用,因此您不能仅仅杀死一个 amok 线程,并且由于堆是共享的,因此插件在用完所有堆时不仅会得到 OutOfMemoryError,而且所有其他正在运行的线程也会如此.

是否有一些开源应用程序/API/框架可以操纵插件类的字节码以使线程可终止和/或跟踪分配以便线程在分配过多时被终止?即使代码不容易“打包”以“单独使用”。您可以通过插入可由另一个“管理器”线程触发的任意产生异常的代码来使线程可终止,并确保该异常未被插件捕获。并且您可以添加某种计数器来计算调用和循环的次数以及分配的数量,并让“管理器”线程杀死打破配置限制的插件。

我认为所有这些事情都可以用 ASM 完成,但我希望以前有人做过。我可以让插件在它们自己的 JVM 中运行,但这将涉及大量持续的数据编码/解码,万一插件 JVM 死机/崩溃,我仍然不知道潜在的几十个(100 多个?)插件是问题所在,我不可能为每个插件运行一个 JVM。

我发现了一些相关问题,但没有一个解决无限循环和吃堆的问题:

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