17.12 Metazeichen der Shell mit Escape-Zeichen versehen
Problem
Sie müssen externe Daten in eine Kommandozeile einfügen, aber Sie wollen Sonderzeichen durch Escape-Zeichen entschärfen, sodass nichts Unvorhergesehenes passieren kann. Beispiel: Sie wollen Benutzereingaben als Kommandozeilenparameter an ein Programm übergeben.
Lösung
Verwenden Sie dagegen escapeshellarg()
, wenn es sich um Kommandozeilenparameter handelt:
system('ls -al '.escapeshellarg($directory));
Nehmen Sie escapeshellcmd()
, wenn es sich um Programmnamen handelt:
system(escapeshellcmd($ls_program).' -al');
Diskussion
Die Kommandozeile ist ein gefährlicher Platz für ungefilterte Zeichen. Geben Sie nie unmodifizierte Benutzereingaben an eine Funktion von PHP durch, die ihre Parameter an ...
Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.