我们正在尝试在“企业”产品中提供可编写脚本的元素。我们想使用 groovy,但我们很难确保非常基本的东西。
例如,我们想阻止一个客户简单地去
Class.forName("my.company.internal.SecruityTools").runAsAwesome(...)
我们已经安装了一个安全管理器,它的策略只允许accesDeclaredMembers
并覆盖了该checkPackageAccess
方法,并且只允许列入白名单的包。不幸的是,默认的类加载器链似乎只是绕过了这一点,并以任何方式加载类。
这似乎是一个相当普遍/讨论过的问题,但我一生都找不到一个库,甚至找不到一篇关于如何在更大的应用程序的上下文中锁定不受信任的脚本的好的博客文章。
有没有人成功地做到了这一点?我错过了一些相当明显的帖子/概念吗?是否已经有一个可靠的库来解决这个问题?也许Groovy.tinFoilHatMode(true)
?