Ich möchte eine Zeichenfolge aus einer Eingabedatei einlesen (die vom Benutzer möglicherweise geändert wurde oder nicht). Ich möchte diese Zeichenfolge als eine Format-Anweisung behandeln, die mit einer festen Anzahl von Argumenten aufgerufen wird. Allerdings verstehe ich, dass einige Format-Direktiven (insbesondere die ~/
in den Sinn kommt) potenziell zum Einfügen von Funktionsaufrufen verwendet werden könnte, was diesen Ansatz von Natur aus unsicher macht.Sicheres Parsen von Format-Direktiven in Common Lisp
Wenn read
unter Verwendung von Daten in Common Lisp parsen, stellt die Sprache die *read-eval*
dynamischen Variable, die eingestellt werden kann nil
#.
Code-Injektion zu deaktivieren. Ich suche nach etwas ähnlichem, das Code-Injection und arbiträre Funktionsaufrufe innerhalb von Format-Direktiven verhindern würde.
Danke. Ich hatte nicht einmal über Endlosschleife Probleme gedacht. Bei Problemen wie diesen werde ich wahrscheinlich meine eigene Mikrosprache für Formatbezeichner schreiben, anstatt zu versuchen, 'Format' zu optimieren. –
@SilvioMayolo Dies ist auch eine gute Vorgehensweise. Aber nehmen Sie sich etwas Zeit, um zu sehen, ob es andere Formate gibt: Ich denke an "cl-interpol", aber es könnte andere geben. Viel Glück! – coredump
Sehr schöner Punkt über Iterationskonstrukte! –