如何创建安全的Lua沙箱?所以Lua似乎是在我的应用程序中实现安全“用户脚本”的理想选择。但是,嵌入lua的大多数示例似乎都包括加载所有标准库,包括“io”和“package”。所以我可以从我的解释器中排除这些库,但即使是基本库也包含访问文件系统的函数“dofile”和“loadfile”。如何删除/阻止这些不安全的函数,而不仅仅是一个甚至没有像“ipairs”函数这样的基本内容的解释器?
3 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
您可以通过setfenv()设置运行不受信任代码的功能环境。这是一个大纲:
local env = {ipairs}setfenv(user_script, env)pcall(user_script)
该user_script
功能只能访问其环境中的内容。因此,您可以显式添加您希望不受信任的代码可以访问的功能(白名单)。在这种情况下,用户脚本只能访问ipairs
,但没有别的(dofile
,loadfile
,等)。
有关lua沙盒的详细信息,请参阅Lua Sandboxes。
添加回答
举报
0/150
提交
取消