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

1979.4 Verfügbare Filter
zweite Funktion ein assoziatives Array erwartet und so gleichsam für
die »Batch-Verarbeitung« vieler Eingabevariablen geeignet ist. Wir
werden im Folgenden zunächst nur die »einfachen« Funktionen
betrachten – die Array-Funktionen unterscheiden sich in der tatsäch-
lichen Benutzung nicht wesentlich. Beide geben eine gefilterte Version
dieser Variablen zurück – schlägt die Validierung fehl, ist der Rückga-
bewert
FALSE oder gegebenenfalls NULL. Die Syntax für filter_input()
sieht in Worten ausgedrückt folgendermaßen aus:
$gefiltert = filter_input(WOHER, 'name', WOMIT, optionen);
Das erste und das dritte Argument wird jeweils in Form einer Kon-
stante oder eines Integerwertes übergeben, der die Herkunft der zu fil-
ternden Variablen und den anzuwendenden Filter enthält. Das zweite
Argument zu
filter_input() ist der Variablenname für die zu filternde
Variable – möchten Sie Optionen verwenden, die für jeden Filter unter-
schiedlich sind, können Sie diese als letztes Argument in einem assozi-
ativen Array übergeben.
Im Gegensatz zu
filter_input() filtert filter_var() bereits in PHP
vorhandene Variablen – Elemente aus superglobalen Arrays, Session-
oder von Ihnen definierte Variablen also. Die Funktion wird mit min-
destens einem Argument, nämlich der zu filternden Variablen, und
zwei optionalen Parametern, die den anzuwendenden Filter und das
assoziative Options-Array angeben, aufgerufen:
$gefiltertevariable = filter_var($ungefiltertevariable, WOMIT,
$optionen);
Rückgabewert dieser Funktion ist eine gefilterte Version der übergebe-
nen Variablen.
Für jeden zur Verfügung stehenden Filter gibt es eine Konstante
sowie einen Integerwert, die ihn jeweils eindeutig identifizieren. Eine
vollständige und aktuelle Liste finden Sie in der Onlinedokumenta-
tion
1
– die zum Zeitpunkt der Drucklegung aktuellen Filter haben wir
im nächsten Absatz zusammengestellt.
9.4 Verfügbare Filter
Die Extension bedient sich einer flexiblen, aber recht umständlich zu
benutzenden API, um Inputfiltering für alle möglichen Arten von Ein-
gabedaten zu betreiben. Dabei wird zwischen den sogenannten »sani-
tizing«, also »reinigenden« Filtern und solchen unterschieden, die
1. http://de3.php.net/filter
9 Variablenfilter mit ext/filter198
ihnen übergebene Eingabedaten auf Gültigkeit bezüglich einer
bestimmten Annahme validieren, sie aber nicht verändern.
Zur porentiefen Reinigung von Benutzereingaben stehen momen-
tan die folgenden Filter zur Verfügung:
Entfernung von HTML und HTML-Elementen mit optionaler
Codierung von Sonderzeichen in ihre HTML-Entitäten
URL-Encoding von Input
Unzulässige Zeichen aus einer E-Mail-Adresse entfernen
Eine URL um unerlaubte Zeichen bereinigen
Entfernung aller Zeichen, die nicht in Integer- oder Float-Werten
vorkommen können
Mit einer vom Entwickler definierten Callback-Funktion können wei-
tere säubernde Filter definiert werden.
Die validierenden Filter umfassen Gültigkeitsprüfungen für fol-
gende Daten:
Integer- und Float-Zahlen
URLs
E-Mail-Adressen
IP-Adressen (IPv4 und IPv6)
Boolesche Werte
Benötigen Sie eine Prüfung für andere Daten, können Sie mittels eines
entsprechenden Filters auch gegen eine von Ihnen definierte Regular
Expression prüfen – so ist praktisch jede Überprüfung möglich.
Da alle Filter mit einer nicht besonders leicht zu merkenden nume-
rischen ID und einer Konstanten bezeichnet werden, ist eine Übersicht
über die verfügbaren Filter recht hilfreich. Der folgenden Tabelle kön-
nen Sie den Einsatzzweck und die Bezeichner jedes Filters entnehmen –
die genaue Syntax erfahren Sie dann in den nächsten Abschnitten.
9.4.1 Validierende Filter
Alle Filter, deren Konstante _VALIDATE_ enthält, werden eingesetzt,
um Werte zu prüfen. Sie ändern die Werte in der Regel nicht, wenn sie
gültig sind, und geben FALSE zurück, wenn ein Wert übergeben
wurde, der nicht den Filterregeln genügt.
1999.4 Verfügbare Filter
9.4.2 Reinigende Filter
Die »sanitizing« oder reinigenden Filter ändern die übergebenen Vari-
ablen, sodass diese den Filterregeln genügen.
  !!  "

FILTER_VALIDATE_INT
+1<9495BD,5BD1<C>D575BJ18<E>4792DCD5DC59>5>
45J9=1<5>>D575BG5BDJEBT3;

FILTER_VALIDATE_BOOLEAN
%BT6D?259>5+1B912<51<C2??<5C385B,5BD
9>D5B@B5D95BDG5B45>;1>>

FILTER_VALIDATE_FLOAT
%BT6D1E6CI>D1;D9C38;?BB5;D5<59D;?==1J18<

FILTER_VALIDATE_REGEXP
%BT6D7575>?@D9?>1<JET25B7525>45>B57E<RB5>
EC4BE3;

FILTER_VALIDATE_URL
(D5<<D65CD?245BT25B7525>5%1B1=5D5B59>
CI>D1;D9C387T<D975B*'!9CD

FILTER_VALIDATE_EMAIL
(I>D1H@BT6E>7F?>"19<4B5CC5>

FILTER_VALIDATE_IP
%BT6E>7F?>%F?45B%F4B5CC5>1E6
CI>D1;D9C385 ?BB5;D859D
  !!  "

FILTER_SANITIZE_STRING
<91CFILTER_SANITIZE_STRIPPED
>D65B>D)17C;1>>?@D9?>1</59385>
=9D8?85>?45B>954B975>(?45C
9>)"!>D9DRD5>E=G1>45<>?45B
5>D65B>5>

FILTER_SANITIZE_ENCODED
*'!3?495BD(DB9>7C5>D65B>D?@D9?>1<
/59385>=9D8?85>?45B>954B975>
(,5BD5>

FILTER_SANITIZE_SPECIAL_CHARS
?495BD)"!(?>45BJ59385>

FILTER_UNSAFE_RAW
(D1>41B469<D5B)ED>938DC;1>>?@D9?>1<
/59385>=9D>954B975>?45B8?85>
(,5BD5>3?495B5>?45B5>D65B>5>

FILTER_SANITIZE_EMAIL
>D65B>D9>"19<4B5CC5>>938D
5B<1E2D5/59385>

FILTER_SANITIZE_URL
>D65B>D>938D5B<1E2D5/59385>9>
59>5=*'!

FILTER_SANITIZE_NUMBER_INT
BJ5E7DCI>D1;D9C38;?BB5;D5>D575B
G5BD59>45=1EP5B/9665B>E>41<<5
/59385>5>D65B>DG5B45>

FILTER_SANITIZE_NUMBER_FLOAT
>D65B>D1<<5/59385>1EP5B/9665B>
E>4?@D9?>1<5

FILTER_SANITIZE_MAGIC_QUOTES
<91C6TBaddslashes()

FILTER_CALLBACK
'E6D>EDJ5B4569>95BD51<<213;E>;D9?>
?45B"5D8?451E6

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