2012-03-26 9 views
2

Ich bin neu zu Lua und möchte fragen, ob es möglich ist, Lua-Syntax in der Konfigurationsdatei zu beschränken? Ich weiß, dass das Laden von Konfig im Gefängnis ausgeführt werden muss, aber wie wir mit in der Konfigurationsdatei umgehen können, die wir laden wollen? Gibt es eine Möglichkeit, nur Zeichenfolgen, Zuweisungen und Tabellen in der Konfiguration zuzulassen, und wenn nicht, was ist dann der beste Weg, um zu überprüfen, dass die Lua-Datei keine unerwünschten Konstrukte enthält? Ist manuelle Voranalyse die einzige Lösung?wie lua config-Datei zu machen, um sicher zu sein

Antwort

7

Sie scheinen bereits über "Sandboxing" in Lua zu wissen. Was also übrig bleibt, ist, wie Sie bösartige Konstrukte wie Endlosschleifen sagen. Und um das zu lösen, müssen Sie das Halteproblem lösen. Was nicht praktisch ist.

Anstatt "manuell" zu parsen und zu hoffen, dass Sie alle schädlichen Inhalte finden (werden Sie nicht), wie wäre es mit Ihrem Lua-Interpreter mit einem Timer-Set, so dass das Skript unterbrochen wird, wenn es länger als N Sekunden dauert ?

+0

+1 für praktische Lösung, anstatt es auf die andere harte Weise zu lösen – cctan

0

Wenn Sie bestimmte Konstrukte in Lua explizit verbieten wollen, müssen Sie die Datei tatsächlich selbst scannen. Beachten Sie, dass diese Konstrukte auch in Konfigurationsdateien gültige Verwendungen aufweisen, sodass Sie einschränken, was der Benutzer tun kann.

Es wäre nicht zu schwer, einen einfachen Lua-Lexer zu schreiben, der den Inhalt von Strings und Kommentaren ignoriert, aber Fehler bei allen anderen Lua-Schlüsselwörtern außer return. Bei richtigem Sandboxing (dh es sind keine Funktionen verfügbar, um angerufen zu werden), sollte das ausreichen, um irgendwas Böswilliges auszusondern.

Beachten Sie auch, dass Lua 5.1 es nicht leicht macht, den Parser davon abzuhalten, Nichttextdaten zu analysieren (zB: kompilierter Lua Bytecode). 5.2 bietet spezielle API-Unterstützung, um den Loader dazu zu zwingen, nur Text zu erkennen und daher Bytecode abzulehnen.

Verwandte Themen