gpt4 book ai didi

security - 在Lua运行时禁用对os和io库的访问

转载 作者:行者123 更新时间:2023-12-03 07:54:24 24 4
gpt4 key购买 nike

我正在设计简单的沙箱,以允许用户运行小型 lua 脚本,并且有点偏执,我不满足于仅仅将其放入受限制的 docker 容器中。我想知道,如果我在运行脚本之前将 os 和 io 设置为 nil(即将它们添加为前两行),它会完全阻止用户无法访问这些标准库?有任何不需要的副作用吗? (假设用户只需要解决一些基本的编程练习,例如查找第 n 个素数等)。

os = nil
io = nil

最佳答案

如果你只将“指针”设置为零,这仍然是可能的......

package.loaded.os.execute('echo "That seems unwanted"')

或者这个

require("os").execute('echo "That too"')

在 Lua 中,所有不需要的引用(尤其是在 package.loaded 中)应设置为 nil,然后就可以执行:collectgarbage() >
即使您认为“我将 package 设置为 nil

require("os").execute('echo "Oups - Didnt mentioned that"')

可以工作

副作用
这取决于。
一个记录良好的沙箱应该可以正常工作。
一个好的开始是:不积极开发
演示
上:Luiz Henrique de Figueiredo: Libraries and tools for Lua

关于security - 在Lua运行时禁用对os和io库的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76416474/

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