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 lesen

Chronologische Liste und Netflix-Links -

Neuerscheinungen in der Übersicht -

Vorschau auf Film- und Serien-Highlights -

Mehr zum Thema

Webdesign

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.
Facebook

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?
Online-Recht

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.
Online-Recht in der Cloud

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…
E-Commerce-Logistik

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.