International PHP Conference Berlin 2025

Différences avec Lua standard

LuaSandbox fournit un environnement sécurisé qui diffère de certaines manières de Lua 5.1 standard.

Fonctionnalités non disponibles

  • Les packages dofile(), loadfile(), et io, car ils permettent un accès direct au système de fichiers. Si nécessaire, l'accès au système de fichiers doit être effectué via des fonctions de rappels PHP.

  • Le package package, y compris require() et module(), car il dépend fortement de l'accès direct au système de fichiers. Une réécriture pure Lua telle que celle utilisée dans l'extension MediaWiki Scribunto peut être utilisée à la place.

  • load() et loadstring(), pour permettre l'analyse statique du code Lua.

  • print(), depuis qu'il écrit sur la sortie standard. Si nécessaire, la sortie doit être effectuée via des fonction de rappels PHP.

  • La plupart du package os, car il permet la manipulation du processus et l'exécution d'autres processus.

    • os.clock(), os.date(), os.difftime(), et os.time() reste disponibles.

  • La plupart du package debug, car il permet la manipulation de l'état Lua et des métadonnées de manière à pouvoir casser l'isolation.

    • debug.traceback() reste disponibles.

  • string.dump(), car il peut exposer des données internes.

  • Le package collectgarbage(), gcinfo(), et coroutine n'ont pas été examinés pour la sécurité.

Features that have been modified

  • pcall() et xpcall() ne peuvent pas attraper certaines erreurs, en particulier les erreurs de délai d'attente.

  • tostring() n'inclut pas les adresses de pointeur.

  • string.match() a été patché pour limiter la profondeur de récursion et pour vérifier périodiquement un délai d'attente.

  • math.random() et math.randomseed() sont remplacés par des versions qui ne partagent pas l'état avec rand() de PHP.

  • Les méta méthodes de Lua 5.2 __pairs et __ipairs sont supportées par pairs() et ipairs().

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top