O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

2059.10 Reinigende Filter
9.10 Reinigende Filter
Im Gegensatz zu den validierenden Filtern, die ungültige Übergabepa-
rameter nicht verändern, sondern FALSE zurückgeben, sind die »sani-
tizing« Filter dazu gedacht, Eingabewerte zu reinigen und für den
intendierten Einsatzzweck vorzubereiten. Sie werden ähnlich ausge-
führt wie ihre prüfenden Gegenstücke, heißen jedoch anders.
In der Regel teilen sich die reinigenden Filter die Flag-Konstanten
mit den validierenden Filtern, und auch die Behandlung von Optionen
ist meist ähnlich, daher wird im Folgenden nicht weiter auf sie einge-
gangen.
9.11 Prüfung externer Daten
Variablen erst dann zu prüfen, wenn sie sich bereits innerhalb Ihrer
PHP-Anwendung befinden, ist konzeptbedingt weniger sicher, als sie
erst dann in den Kontext Ihrer Skripte zu importieren, wenn Sie sicher
sind, dass die Variablen das enthalten, was Sie erwarten. Diesen
Zweck verfolgt die Funktion
filter_input(). Sie erhält zwei zusätzli-
che Argumente, die angeben, welche Variable behandelt werden soll
und aus welchem Bereich sie kommt. Zu diesem Zweck importiert
filter_input() die entsprechenden Teile aus den Request-Variablen
und behandelt sie mit dem übergebenen Filter. So können Sie eine Art
»Brandwall« zu Beginn Ihrer PHP-Skripte errichten, der nur sichere
Variablen überhaupt in das Skript hineinlässt und alle anderen Werte
aussperrt. Bei konsequenter Anwendung benötigen Sie so die superglo-
balen Arrays
$_GET, $_POST usw. nicht mehr – alle externen Variablen
erhalten Sie als Rückgabewert eines
filter_input()-Aufrufes.
Momentan kann
filter_input() Werte aus folgenden Bereichen
der HTTP-Anfrage entgegennehmen:
INPUT_GET – Per GET übergebene URL-Parameter
INPUT_POST – Variablen aus einem POST-Request
INPUT_COOKIE – Cookie-Variablen
INPUT_ENV – Umgebungsvariablen
INPUT_SERVER – Servervariablen
Möchten Sie also die per URL-Parameter übergebene Variable »id«
überprüfen, um festzustellen, ob sie ein Integerwert ist, gehen Sie wie
folgt vor:
filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required