PHP-Filter für den Eigengebrauch

Teil 5: Sicherheit bei PHP: Bereinigen von Daten durch eine Web-Applikation

Die beiden umgekehrten Schrägstriche und die beiden runden Klammern wurden aus dem Domain-Anteil der E-Mail-Adresse entfernt.

Bereinigen und Kodieren von URLs

Für das Kodieren von URLs zeichnete ursprünglich die Funktion urlencode() verantwortlich; weitaus flexiblere Möglichkeiten bietet diesbezüglich inzwischen die Filter-Erweiterung von PHP. Zum Bereinigen von URLs können Sie an die Funktion filter_var() den Parameter FILTER_SANITIZE_URL übergeben, zum Beispiel

$url = "http://www.magnus.deA"U";
echo filter_var($url, FILTER_SANITI
ZE_URL);

ergibt die URL: http://www.magnus.de

Mittels FILTER_FLAG_ENCODE_AMP wird das &-Zeichen als & encodiert.

Damit eine Zeichenkette dieser Art: http://magnus.de/Neues Verzeichnis!/Dokument.php?id=1&opt=2

als eine URL kodiert wird, genügt:

filter_var($url, FILTER_SANITIZE_ENCO
DED, FILTER_FLAG_STRIP_LOW);

Das Ergebnis nimmt die folgende Form an:

http%3A%2F%2Fmagnus.de%2FNeues%20Verzeichnis%21%2FDokument.php%3Fid%3D1%26opt%3D2

Benutzerdefinierte Filter

Zum Einbinden benutzerdefinierter Funktionen dient der PHP-Filter FILTER_ CALLBACK. Um die Eingabe mithilfe dieses Filters zu bereinigen oder zu validieren, wird etwa dieser Quelltext benötigt:

$email = $_POST['email'];
function emailValidieren($email) {
/* Inhalt des benutzerdefinierten E-
Mail-Filters */
}
echo filter_var($email, FILTER_CALL
BACK, array("options"=>"emailValidieren"));

Der Callback-Filter kann auch eine PHP-Funktion oder eine Klassenmethode entgegennehmen:

$email = $_POST['email'];
/*** Anfang der Klassenmethode ***/
class klasse{
function emailFiltern($email) {
/* die Funktion verarbeitet die Vari
able */
}
}
/*** Ende der Klassenmethode ***/
echo filter_var($email, FILTER_CALL
BACK, array("options"=>array("klasse", "emailFiltern")));

Die Übergabe von mehreren Funktionen an den Callback-Filter ist leider unzulässig.

Handhabung von Ausnahmefehlern

Mithilfe der Callback-Funktion können Sie einen Ausnahmefehler erzeugen, sollte die zu prüfende Variable einmal einen unerwünschten Wert (oder einen Wert, der nicht im vorgegebenen Bereich liegt) erhalten.

Im ersten Schritt definieren Sie eine Funk-tion, die den Wert der betreffenden Variable überprüft und einen Ausnahmefehler ausgeben kann:

function check_num(&$num) {
if($num != 9) {
throw new Exception("Schwerer Ausnah
mefehler");
}
}

Zum Handhaben des Ausnahmefehlers kommt jetzt try/catch zum Einsatz. Die Übergabe der Variable an FILTER_CALLBACK muss in dem try-Block eingeschlossen sein. Der catch-Block wird die Ausnahme abfangen. Der ganze Code zum Handhaben der Ausnahme sieht dann etwa so aus:

try {
filter_var($num, FILTER_CALLBACK,
array("options"=>"check_num"));
}
catch (Exception $ausnahme) {
echo $ausnahme->getMessage();
}

Weicht der Wert der $num-Variable von dem durch die Methode check_num() festgelegten Bereich ab, wird ein Ausnahmefehler ausgegeben.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".