首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroovyClassLoader parseClass安全性

GroovyClassLoader parseClass安全性
EN

Stack Overflow用户
提问于 2014-01-10 23:40:33
回答 1查看 233关注 0票数 1

我正在构建一个Grails应用程序,它允许用户编写Groovy代码,然后在我的框架中执行这些代码。当然,这是一个巨大的安全威胁,因为用户可能会输入恶意代码。

Groovy类是用GroovyClassLoader#parseClass(String)动态编译的。

我想严格限制用户编写的Groovy类可以访问的类和操作。似乎有两个不相互排斥的通用选项:

1)为了使用SecurityManager和策略文件来限制来自特定codeSource的代码被允许做什么,

2)扩展GroovyClassLoader,实现套餐白名单或黑名单,限制用户代码可以访问哪些类。

不受信任的代码不得以任何方式访问GORM或数据库、读取或写入本地磁盘、打开网络套接字、写入控制台等。

我已经实现了SecurityManager方法,它部分起作用了,阻止了至少读取文件、打开套接字、退出VM等的能力。

但是,攻击者仍然可以通过Groovy println(String)向控制台写入数据(这不是一个大问题),更糟糕的是:她可以成功地执行User.list()操作,以获取所有用户及其散列密码,以及数据库中的其他所有内容!我如何防止这种情况发生?

我正在考虑扩展GroovyClassLoader,以防止用户脚本加载,例如,首先加载我的域类。这是否足够呢?你有没有其他的建议?我怎样才能确保我没有留下任何漏洞?

EN

回答 1

Stack Overflow用户

发布于 2014-01-10 23:50:44

您可以采用另一种方式,不保护方法,但为用户代码提供您的环境(沙箱)

here为例。

还要考虑白名单策略:拒绝所有不允许的事情。它将防止您忘记smth critical。

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

https://stackoverflow.com/questions/21048378

复制
相关文章

相似问题

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