簡體   English   中英

LUA 5.2:加載/需要/等 - 將其限制為可以加載的特定目錄

[英]LUA 5.2: Load/Require/etc - Limit it to specific directories that can be loaded

我試圖在我的游戲中保護 LUA(玩家可以在 LUA 中創建腳本)。 我刪除了許多函數來創建各種沙箱(例如,又名刪除os.execute函數。)但是,我的游戲確實使用了從其他位置加載腳本來減少編碼冗余。 阿卡:

require("Scripts/Additional/Crafting")在文件的頂部。

對我來說,這很好,但我不知道讓 require/load/file.read() 沒有限制的影響,或者如果可能的話覆蓋它以便他們無法從外部加載或讀取文件服務器。

現在我正在使用帶有 LUA5.2 的 NLUA (C#)。 我在創建 LUA 狀態時刪除了這些函數。

我想做的是保留 LOAD/REQUIRE/etc 但在手頭之前通過初始檢查覆蓋它以確保它們在 SCRIPT 目錄中。 新函數本身不可編輯(因為我將使用 NLUA 在 C# 中對其進行硬編碼,或者制作一個位於他們無法訪問的文件夾之外的單獨文件)。

或者,我可以通過 C# 快速檢查這些函數的腳本,並使用 REGEX 驗證它們使用的目錄,但想知道 LUA 是否可以自己處理它。

對不起,如果這沒有正確解釋。

Lua >=5.2 具有對沙箱環境有用的功能環境_ENV ,就像您的情況一樣。 http://lua-users.org/wiki/EnvironmentsTutorial

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM