保護腳本,正確接受 require
為何 require 可能帶來安全風險?
如何正確使用 require 呢?
- XXTouch 保證部分模組的函式會在被 require 之前恢復初始狀態,包括
os、io、string、device、http、file、table模組的所有函式 - 可通過深拷貝全域環境到模組內局部環境來確保安全呼叫上述模組中的函式,例如:
-- 在腳本的最前面加上這個代碼
local _ENV = table.deep_copy(_ENV)
-- 下面就是腳本的主體內容
--
-- 最後您可能還需要返回一些導出函數或者常量 - 當一個模組被 require 方式引用時,全域變數
been_require會無條件置為true,可通過該變數判斷目前腳本是否正在被 require,例如:-- 在腳本的最前面加上這個代碼
if been_require then
return -- 如果被 require 就直接退出
end
-- 下面就是腳本的主體內容