创建 Lua (5.2+) C 语言沙盒

我正在尝试设置一个仅支持有限数量函数的沙盒。 在 Lua 5.2 之前,可以通过 setfenv 函数来完成这个任务。在 5.2 及以上版本中,由于该函数不可用,我猜您必须以不同的方式来实现它。有一些示例可以从 Lua 自身 在 Lua 5.2 中设置沙盒。 有没有一些样例代码可以从 C 语言实现一个简单的沙盒,只支持 print 函数?

点赞
用户107090
用户107090

查看 luaB_loadfileload_aux 了解如何从 C 中设置 _ENV。关键点是要在 Lua 函数加载并运行之前,将沙盒设置为 Lua 函数的第一个 upvalue。

2017-11-03 15:46:26