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.