保护脚本,正确接受 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
-- 下面就是脚本的主体内容