Java 中不受信任的 Groovy Script Security

2022-09-03 15:25:05

我们正试图在“进取”产品中提供可脚本化的元素。我们想使用时髦,但我们很难确保非常基本的东西。

例如,我们希望防止客户简单地去

Class.forName("my.company.internal.SecruityTools").runAsAwesome(...)

我们安装了一个安全管理器,其策略仅允许并覆盖了该方法,并且只允许列入白名单的软件包。不幸的是,默认的classLoader链似乎只是绕过了这一点,并以任何方式加载类。accesDeclaredMemberscheckPackageAccess

这似乎是一个相当常见/讨论过的问题,但是我无法为我的生活找到一个库,甚至是一篇关于如何在更大的应用程序上下文中锁定不受信任的脚本的好博客文章。

有没有人成功地做到了这一点?我是否错过了一些相当明显的帖子/概念?有没有一个坚实的库?或?Groovy.tinFoilHatMode(true)


答案 1

看看Groovy Sandbox。您可以使用它来阻止诸如 或 之类的事情。System.exit(0)new File(“/etc/passwd”)


答案 2

看看java-sandbox。还有一个教程,介绍如何将其与groovy一起使用:http://blog.datenwerke.net/2013/06/sandboxing-groovy-with-java-sandbox.html


推荐