gpt4 book ai didi

lua - 如何创建安全的 Lua 沙箱?

转载 作者:行者123 更新时间:2023-12-03 05:20:41 28 4
gpt4 key购买 nike

因此,Lua 似乎是在我的应用程序中实现安全“用户脚本”的理想选择。

但是,大多数嵌入lua的示例似乎都包含加载所有标准库,包括“io”和“package”。

所以我可以从解释器中排除这些库,但即使是基础库也包含访问文件系统的函数“dofile”和“loadfile”。

如何删除/阻止任何此类不安全函数,而不会最终得到一个甚至没有“ipairs”函数等基本内容的解释器?

最佳答案

您可以通过setfenv设置运行不受信任代码的函数环境。 ()。概要如下:

local env = {ipairs}
setfenv(user_script, env)
pcall(user_script)

user_script 函数只能访问其环境中的内容。因此,您可以显式添加您希望不受信任的代码有权访问的函数(白名单)。在这种情况下,用户脚本只能访问ipairs,而不能访问其他内容(dofileloadfile等)。

参见Lua Sandboxes有关 lua 沙箱的示例和更多信息。

关于lua - 如何创建安全的 Lua 沙箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224708/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com