如何限制 lua 的可能性(调用 OS 函数、模块等)

Posted

技术标签:

【中文标题】如何限制 lua 的可能性(调用 OS 函数、模块等)【英文标题】:How can I limit lua possibilities (calling OS functions, modules, etc.) 【发布时间】:2011-04-07 09:02:53 【问题描述】:

我在我的 C 应用程序中使用 Lua 作为脚本语言。

它很适合我,但我不明白如何限制 Lua 不调用系统函数,不包含其他模块等。

我希望 Lua 能够只调用我允许的函数,因为用户可以使用完整的 Lua + Lua 模块功能做各种坏事。

【问题讨论】:

How can I create a secure Lua sandbox? 的可能重复项 【参考方案1】:

查看 Lua 用户 wiki 上的 Simple Sandbox:http://lua-users.org/wiki/SandBoxes

相关的 SO 讨论:

Is there anyway to avoid this security issue in Lua? How can I create a secure Lua sandbox? How to execute an untrusted Lua file in its own environment from the C API

【讨论】:

【参考方案2】:

沙盒是您正在寻找的术语。简而言之,只将您希望用户调用的函数导出到 Lua。就是这么简单,真的。

【讨论】:

【参考方案3】:

您可以通过不加载 ospackage 模块来完成此操作。不要使用luaL_openlibs,请参阅this post。

【讨论】:

以上是关于如何限制 lua 的可能性(调用 OS 函数、模块等)的主要内容,如果未能解决你的问题,请参考以下文章

再说C模块的编写

Lua函数之一

Lua中,如何控制时间的延迟

Lua 模块与包 调用c程序.so文件

如何在lua中设置文件写入函数调用的长度?

Lua学习总结三