我正在尝试在我的游戏中保护 LUA(玩家可以在 LUA 中创建脚本)。我已经删除了许多函数来创建各种沙箱(os.execute
例如,AKA 删除函数。)但是,我的游戏确实使用从其他位置加载脚本来减少编码冗余。又名:
require("Scripts/Additional/Crafting")
在文件的顶部。
对我来说,这很好,但我不知道将 require/load/file.read() 保留为没有限制的影响,或者如果可能覆盖它,以便他们无法从外部加载或读取文件服务器。
现在我正在使用 NLUA (C#) 和 LUA5.2。我在创建 LUA 状态时删除了这些功能。
我想做的是保留 LOAD/REQUIRE/etc,但事先通过初始检查覆盖它,以确保它们位于 SCRIPT 目录中。新函数本身不可编辑(因为我将使用 NLUA 在 C# 中对其进行硬编码,或者在他们无法访问的文件夹之外创建一个单独的文件)。
或者,我可以通过 C# 对这些函数的脚本进行快速检查,并使用 REGEX 验证它们使用的目录,但我想知道 LUA 是否可以自己处理它。
抱歉,如果没有正确解释。