Warum ist eval "ls -l $filename" gefährlich, wenn filename von einem Benutzer stammt?
eval "ls -l $filename"
filename
eval beschränkt die Zeichenkette auf ls-Argumente, sodass zusätzliche Shell-Syntax ignoriert wird.
eval
ls
ls -l führt automatisch whoami aus, sobald ein Dateiname ungültig ist.
ls -l
whoami
eval analysiert die erzeugte Zeichenkette erneut als Shell-Code, sodass die Eingabe zusätzliche Befehle einschleusen kann.
Der Befehl read führt jede Zeile aus, bevor er sie der Variablen zuweist.
read