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

9 Variablenfilter mit ext/filter206
Ist die übergebene Variable nicht vom Typ Integer (z.B. weil ein
Angreifer eine Möglichkeit für eine SQL-Injection vermutet), gibt die
Funktion
FALSE bzw. NULL zurück.
Konzipieren Sie eine PHP5-Anwendung neu, sollten Sie die Benut-
zung von ext/filter zum geregelten Import von Variablen aus dem
»Userland« in Erwägung ziehen, da Sie so im günstigsten Falle keiner-
lei potenziell unsichere Daten mehr in Ihren Skripten vorfinden.
9.12 Callback-Funktionen
Finden Sie für Ihre Anwendung nicht den passenden Filter im Liefer-
umfang von ext/filter, möchten aber eine konsistente API nutzen, um
etwa mithilfe von
filter_input() zu Skriptbeginn alle notwendigen
Variablen bereinigt in den Scope Ihres Skriptes zu holen, so können Sie
mit der Filterkonstanten
FILTER_CALLBACK eine von Ihnen definierte
Funktion nutzen.
Wenn Sie zum Beispiel prüfen möchten, ob eine Variable eine in
Deutschland gültige und momentan vergebene Postleitzahl darstellt,
werden Sie um einen Zugriff auf eine aktuelle PLZ-Datenbank kaum
herumkommen – ebenso bei Bankleitzahlen. Möchten Sie diese Prü-
fung mit einem Filter erledigen, könnte dies folgendermaßen aussehen:
function pruefe_plz ($kandidat) {
// Postleitzahlen in Array laden (Datenbank o.ä.)
$plzarray = array (12345, 30449, 33378, 33449);
if (in_array($kandidat, $plzarray)) {
return $kandidat;
} else {
return FALSE;
}
}
filter_input(INPUT_GET, 'plz', FILTER_CALLBACK, array("options" =>
"pruefe_plz"));
Wie Sie sehen, erhält der Funktionsaufruf von filter_var() bzw.
filter_input() als Option den Funktionsnamen der Callback-Funk-
tion und enthält als Filterargument die Konstante
FILTER_CALLBACK. Der
Rückgabewert des Callbacks bestimmt den Return-Wert des
filter_input() – in diesem Falle würde bei einer erfolgreichen Prüfung
die Postleitzahl zurückgegeben.
Mit Callback-Funktionen können Sie einige interessante Ideen ver-
wirklichen, stoßen allerdings bisweilen an die Grenzen der Filter-API.
Die für deutsche Bankkontodaten oft notwendige Prüfung der Zuord-
nung BLZ zu Kontonummer lässt sich mittels einer Callback-Funktion
nicht sauber realisieren, da
filter_input() und filter_var() nur ein

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