21.19 Metazeichen der Shell mit Escape-Zeichen versehen
Problem
Sie müssen externe Daten in eine Kommandozeile einfügen, aber Sie wollen Sonderzeichen durch Escapezeichen entschärfen, so dass nichts Unvorhergesehenes passieren kann. Beispiel: Sie wollen Benutzereingaben als Kommandozeilen-Parameter an ein Programm übergeben.
Lösung
Verwenden Sie dagegen escapeshellarg( )
, wenn es sich um Kommandozeilenparameter handelt:
system('ls -al '.escapeshellarg($directory));
Verwenden 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 ...
Get PHP 5 Kochbuch 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.