Protéger les scripts et accepter correctement require
Pourquoi require peut-il présenter un risque de sécurité ?
- Les modules de script chiffrés de XXTouch peuvent être référencés par d’autres scripts ou modules au moyen de require
- Lorsqu’un script chiffré est appelé par require, l’environnement global n’est pas fiable et les fonctions appelées par le script peuvent avoir été remplacées
Comment utiliser require correctement ?
- XXTouch garantit que les fonctions de certains modules sont restaurées à leur état initial avant l’appel de require, notamment toutes les fonctions des modules
os,io,string,device,http,fileettable - Pour garantir un appel sûr des fonctions de ces modules, vous pouvez effectuer une copie profonde de l’environnement global dans un environnement local du module, par exemple :
-- Ajouter ce code au tout début du script
local _ENV = table.deep_copy(_ENV)
-- Corps principal du script
--
-- Vous devrez peut-être finalement renvoyer des fonctions ou constantes exportées - Lorsqu’un module est appelé au moyen de require, la variable globale
been_requireest inconditionnellement définie surtrue. Cette variable permet de déterminer si le script actuel est appelé par require, par exemple :-- Ajouter ce code au tout début du script
if been_require then
return -- Quitter directement si le script est appelé par require
end
-- Corps principal du script