为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建安全的Lua沙箱?

如何创建安全的Lua沙箱?

MMMHUHU 2019-08-16 15:56:52
如何创建安全的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,但没有别的(dofileloadfile,等)。

有关lua沙盒的详细信息,请参阅Lua Sandboxes


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 851 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信