首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lupa可以用来在python中运行不可信的lua代码吗?

Lupa可以用来在python中运行不可信的lua代码吗?
EN

Stack Overflow用户
提问于 2013-07-04 01:13:47
回答 1查看 2K关注 0票数 5

假设我用register_eval=False和一个attribute_filter创建了LuaRuntime,它可以防止访问除几个python函数之外的任何内容。可以安全地假设lua代码不能做os.system("rm -rf *")或类似的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-04 02:22:11

通过查看Lupa doc

限制Lua对Python对象的访问

Lupa提供了一种简单的机制来控制对Python对象的访问。每个属性访问都可以通过一个过滤器函数传递,如下所示...

它没有提到任何关于阻止或限制对Lua本身提供的设施的访问。如果没有对LuaRuntime环境做任何其他修改,那么lua脚本确实可以做类似于os.execute("rm -rf *")的事情。

要控制lua脚本在哪种环境中工作,可以在运行脚本之前使用setfenvgetfenv对脚本进行沙箱保护。例如:

代码语言:javascript
复制
import lupa
L = lupa.LuaRuntime()
sandbox = L.eval("{}")
setfenv = L.eval("setfenv")

sandbox.print   = L.globals().print
sandbox.math    = L.globals().math
sandbox.string  = L.globals().string
sandbox.foobar  = foobar
# etc...

setfenv(0, sandbox)

现在,执行类似于L.execute("os.execute('rm -rf *')")的操作将导致脚本错误。

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

https://stackoverflow.com/questions/17454263

复制
相关文章

相似问题

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