gpt4 book ai didi

java - 沙盒 Java/Groovy/Freemarker 代码 - 防止执行特定方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:57:46 27 4
gpt4 key购买 nike

我正在开发一个允许开发人员上传自定义 groovy 脚本和 freemarker 模板的系统。

我可以使用默认的 Java 安全基础结构在非常高的级别上提供一定级别的安全性 - 即防止代码访问文件系统或网络,但是我需要限制对特定方法的访问。

我的计划是修改 Groovy 和 Freemarker 运行时以读取将某些方法列入白名单或黑名单的注释,但这将迫使我维护他们代码的 fork 版本,这是不可取的。

我基本上需要做的就是在从 Groovy 或 Freemarker 调用时阻止执行特定方法。我考虑过一个可以查看调用堆栈的黑客攻击,但这将是一个巨大的速度打击(而且非常困惑)。

有没有人有任何其他实现这个的想法?

最佳答案

您可以通过子类化 GroovyClassLoader 并在 AST 访问者中强制执行您的约束来实现。这篇文章解释了如何做到这一点:http://hamletdarcy.blogspot.com/2009/01/groovy-compile-time-meta-magic.html

此外,此处引用的代码位于 Groovy 1.6 安装程序的示例文件夹中。

关于java - 沙盒 Java/Groovy/Freemarker 代码 - 防止执行特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728531/

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