den URL-Parameter pageNum absichern

Wo ist das Problem ?

Wie das folgende Screenshot zeigt, besteht Dreamweavers standardmäßgie Validierung des URL-Parameter “pageNum…” ausschließlich aus einem isset – basierten Test, der nur prüfen kann, ob eine Variable überhaupt existiert und ob sie keinen NULL – Wert hat:


Dreamweavers Standardüberprüfung des URL-Parameters pageNum

Problemanalyse

Da, wie bereits erwähnt, URL-Parameter niemals als “sicher” eingestuft werden können, weil sie in der Browser-Adresszeile angezeigt werden und deren Werte ergo von einem Seitenbesucher umstandslos geändert werden können, sollte ein weitsichtiger Entwickler versuchen, Dreamweavers Standardmethode um zusätzliche Prüfkriterien zu erweitern.

Validierung des Datentyps

In dem folgenden Beispiel prüfe ich mittels der PHP-Funktion ctype_digit zusätzlich, ob der Wert des URL-Parameters “pageNum…” nur aus Ziffern besteht


Überprüfung des pageNum - Paremeters auf Übertragung eines Ziffernwertes

Reicht uns das aus ?

Na, wenn ich schon so´ne blöde Frage stelle, dann wohl eher nicht ! ;-)

Auch wenn die oben vorgestellte Ziffern-Validierung letztlich unabdingbar ist, bringt das Beispiel in Wirklichkeit eigentlich keine Verbesserung.

Bedingt durch den Umstand, dass oberhalb der “if(isset…)” – Kondition der Variable “pageNum_countries” clevererweise ein Initialwert von “0” zugewiesen wird, welcher durch die folgende if/else – Kondition nur geändert wird, falls die in ihr definierten Bedingungen zutreffen, wird der Browser auch im Fall eines nichtnumerischen “xyz” – Datentyps ohnehin die Startseite inkl. der ersten 10 Datensätze anzeigen.

Bis jetzt fehlt uns also eine nutzbringende Implementierung der ctype_digit – Validierung, was beispielsweise als Ausgabe einer Warnmeldung an den Besucher erfolgen könnte:


Warnmeldung: Anzeige im Browser

Um dies zu ermöglichen, muss zuerst unser o.g. Beispiel erweitert werden, indem wir eine “innere” if/else – Bedingung einbauen, welche die ctype_digit – Validierung verwendet und der PHP-Variable “warnhinweis” jenachdem einen Leerwert (”“) oder einen Text zuweist:


Erweiterung der isset - Prüfung, Implementierung der Variable 'warnhinweis'

Damit die Anzeige des Warnhinweises innerhalb des Seitenkörpers auch nur dann erfolgt, wenn die o.g. Variable “warnhinweis” keinen Leerwert hat (warnhinweis != “”), reicht es aus, den Hinweis in eine simple PHP if – Anweisung “einzupacken”:


Codeansicht der Warnmeldung im body