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.