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

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden Ergebnissen…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste einspannen.…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…