首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >沙箱Java / Groovy / Freemarker代码-防止执行特定方法

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

Stack Overflow用户
提问于 2009-04-08 04:32:29
回答 4查看 2.2K关注 0票数 6

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

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

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

实际上,我需要做的就是防止在从Groovy或Freemarker调用特定方法时执行这些方法。我曾考虑过一种查看调用堆栈的黑客攻击,但这将是一个巨大的速度冲击(而且相当混乱)。

有没有人有其他想法来实现这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-09 15:43:13

您可以通过将GroovyClassLoader子类化并在AST Visitor中强制执行您的约束来完成此操作。THis帖子解释了如何做到这一点:http://hamletdarcy.blogspot.com/2009/01/groovy-compile-time-meta-magic.html

此外,这里引用的代码位于Groovy1.6安装程序的samples文件夹中。

票数 5
EN

Stack Overflow用户

发布于 2012-05-22 20:19:42

你应该看看高辅的groovy-sandbox项目。也可以看看他在这个主题上的blog post here,解决方案是什么:沙箱,但性能缺陷。

票数 3
EN

Stack Overflow用户

发布于 2009-04-08 04:59:36

OSGi在这方面做得很好。您可以将代码划分为多个包,并准确设置每个包公开的内容以及其他包公开的内容。这对你有用吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/728531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档