Diferenças do Lua Padrão

O LuaSandbox fornece um ambiente isolado (caixa de areia) que difere em alguns aspectos do Lua 5.1 padrão.

Recursos que não estão disponíveis

  • dofile(), loadfile() e o pacote io, pois eles permitem acesso direto ao sistema de arquivos. Se necessário, o acesso ao sistema de arquivos deve ser feito por meio de funções de retorno PHP.

  • O pacote package, incluindo require() e module(), pois depende muito do acesso direto ao sistema de arquivos. Uma reescrita Lua pura, como a usada na extensão MediaWiki Scribunto, pode ser usada em vez disso.

  • load() e loadstring(), para permitir análise estática do código Lua.

  • print(), já que ele envia para a saída padrão. Se necessário, a saída deve ser feita via funções de retorno PHP.

  • A maior parte do pacote os, pois permite a manipulação do processo e a execução de outros processos.

    • os.clock(), os.date(), os.difftime() e os.time() permanecem disponíveis.

  • A maior parte do pacote debug, pois permite a manipulação do estado Lua e metadados de maneiras que podem quebrar o isolamento.

    • debug.traceback() permanece disponível.

  • string.dump(), pois pode expor dados internos.

  • collectgarbage(), gcinfo() e o pacote coroutine não foram revisados ​​quanto à segurança.

Recursos que foram modificados

  • pcall() e xpcall() não conseguem capturar certos erros, particularmente erros de tempo limite.

  • tostring() não inclui endereços de ponteiros.

  • string.match() foi corrigido para limitar a profundidade da recursão e verificar periodicamente se há um tempo limite.

  • math.random() e math.randomseed() foram substituídos por versões que não compartilham estado com rand() do PHP.

  • Os metamétodos __pairs e __ipairs do Lua 5.2 são suportados por pairs() e ipairs().

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top