Відмінності від стандартного Lua
LuaSandbox надає ізольоване середовище, яке в деяких відносинах відрізняється від стандартного Lua 5.1.
Функції, які недоступні
-
dofile()
loadfile()
та пакетio
оскільки вони дозволяють прямий доступ до файлової системи. При необхідності доступ до файлової системи повинен здійснюватися через callback-функції PHP. -
Пакет
package
, включаючиrequire()
иmodule()
, оскільки він залежить від прямого доступу до файлової системі. Замість нього можна використовувати перезапис на чистому Lua, такий як той, що використовується в модулі MediaWiki Scribunto. -
load()
иloadstring()
для статичного аналізу коду Lua. -
print()
, оскільки функція виводить стандартний висновок. При необхідності висновок повинен виконуватись через callback-функції PHP. -
Більшість пакету
os
оскільки він дозволяє керувати процесом і виконувати інші процеси.os.clock()
os.date()
os.difftime()
иos.time()
залишаються доступними.
-
Більшість пакету
debug
оскільки він дозволяє маніпулювати станом Lua та метаданими способами, які можуть порушити пісочницю.debug.traceback()
залишається доступним.
-
string.dump()
оскільки це може розкрити внутрішні дані. -
collectgarbage()
gcinfo()
та пакетcoroutine
не було перевірено на безпеку.
Змінені функції
-
pcall()
иxpcall()
неспроможна відловити певні помилки, особливо помилки часу очікування. -
tostring()
не включає адреси вказівників. -
string.match()
була виправлена для обмеження глибини рекурсії та періодичної перевірки часу очікування. -
math.random()
иmath.randomseed()
замінюються версіями, які не поділяють стан із функцією PHPrand()
-
Метаметоди
__pairs
и__ipairs
Lua 5.2 підтримуються за допомогоюpairs()
иipairs()