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/filter200
9.5 Zahlen prüfen und filtern
Ein Haupteinfallstor für Angriffe auf SQL-Subsysteme sind ungenü-
gend geprüfte Integervariablen, in die sich SQL-Kommandos ein-
schmuggeln lassen. Mit den Integerfiltern von ext/filter können Sie sol-
che Probleme durch eine Prüfung mit dem validierenden und durch
eine Behandlung mit dem Reinigungsfilter lösen.
Möchten Sie eine Variable namens $zahl daraufhin überprüfen, ob
sie ein Integerwert ist, geschieht dies mit
filter_var($zahl, FILTER_VALIDATE_INT);
Genügt die Zahl dem Kriterium nicht, so gibt die Funktion FALSE
zurück. Möchten Sie zusätzlich noch prüfen, ob der Integerwert zwi-
schen einem bestimmten Minimum und Maximum liegt, erstellen Sie
ein entsprechendes Array mit Optionen:
$options = array("options" => array("min_range" =>1,
"max_range" => 65535));
$intzahl = filter_var($zahl, FILTER_VALIDATE_INT, $options);
Analog können Sie auch Float-Werte filtern. Möchten Sie nicht auf das
in Deutschland übliche Dezimaltrennzeichen »,« verzichten, können
Sie eine entsprechende Option vorsehen:
$options = array("options" => array("decimal" => ","));
$floatwert = filter_var($zahl, FILTER_VALIDATE_FLOAT, $options);
Auch Zahlenwerte in anderen als dem Dezimalsystem, nämlich hexa-
dezimale und oktale Zahlen, können Sie in einem Filterausdruck erlau-
ben. Da Oktalzahlen in PHP mit führender »0« geschrieben werden
und Hexadezimalwerte »verbotene« Zeichen enthalten (nämlich die
Buchstaben a-f und das kleine x), sind sie eigentlich keine gültigen
Integerwerte im Sinne der Definition. Mit zwei Flags, die im dritten
Argument übergeben werden, können Sie jedoch eine Ausnahmebe-
handlung anstoßen. Flags werden mit einem anderen assoziativen
Array übergeben, das sinnigerweise »flags« benannt ist und können
also auch zusätzlich zum Optionsarray angegeben sein:
$options = array( "options" => array(...),
"flags" => FILTER_FLAG_ALLOW_HEX);
Dieses Array, an filter_var() übergeben, ließe neben dezimalen auch
hexadezimale Zahlen zu. Analog verhält sich die Konstante FILTER_
FLAG_ALLOW_OCTAL. Möchten Sie sowohl hexadezimale als auch
Oktalzahlen zulassen, können Sie die beiden Konstanten kombinieren:
$options = array( "options" => array(...),
"flags" => FILTER_FLAG_ALLOW_HEX | FILTER_FLAG_ALLOW_OCTAL);

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