繁体   English   中英

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

[英]Can Lupa be used to run untrusted lua code in python?

假设我使用register_eval=False创建LuaRuntime ,并使用attribute_filter来阻止访问除少数python函数之外的任何内容。 假设lua代码无法执行os.system("rm -rf *")或类似的东西是否安全?

从查看Lupa文档

限制Lua访问Python对象

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

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

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

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 *')")将导致脚本错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM