PHP 5.4 & MySQL 5.6 Grundkurs

Output maskieren – Input prüfen

Testen Sie unsere 1984 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Wenn Sie Formulare perfekt absichern wollen, müssen Sie zwei Strategien verfolgen: den Output maskieren und den Input prüfen. Während das Maskieren des Outputs ziemlich geradlinig läuft, gibt es für die Überprüfung des Inputs verschiedene Möglichkeiten.

Transkript

Zwei Strategien sind wichtig bei der Absicherung von Formularen. Sie müssen zum einen den Output maskieren und zum anderen den Input prüfen. Während die Maskierung des Outputs ziemlich geradlinig ist, gibt es für die Überprüfung des Inputs ganz verschiedene Möglichkeiten. Beginnen wir mit der Maskierung des Outputs. Dafür gibt es spezialisierte Funktionen in PHP, wie beispielsweise das "htmlspecialchars", was auch verschiedene Optionen bietet. Nützlich ist es beispielsweise, dass Sie das "ENT_QUOTES" noch als Parameter verwenden, damit wirklich alle Anführungszeichen behandelt werden. Das heißt, alles,was Sie auf der HTML-Seite ausgeben lassen wollen und was von einem Benutzer stammt, müssen Sie mit htmlspecialchars oder ähnlich behandeln. Schauen wir uns jetzt an, wie man den Input filtern kann. Was Sie mit dem Input machen und wie Sie Ihn überprüfen, hängt einfach ganz davon ab, was Sie an einer bestimmten Stelle erwarten. Beginnen wir mit einem kleinen Beispiel und zwar mit der Überprüfung von Auswahllisten. Auswahllisten, die kann man ja ebenfalls auch manipulieren, wenn ich hier zum Beispiel über die Web Developer Toolbar über "Formulare" das umwandle. Also zum Beispiel hier die Auswahlfelder in Eingabefelder verwandle, und dann schreibe ich irgendwohin "bösartig" noch irgendwie einen Text und dann würde dieses hier auch wirklich ausgegeben werden. Das hier kann man jetzt ganz gut schützen, weil in diesem Fall haben wir eigentlich vorgesehen nur vier mögliche Werte und da können wir überprüfen: Ist das, was ausgewählt wird, auch wirklich eines dieser vier möglichen Werte. Und dafür gibt es eine Funktion, die da sehr nützlich ist und die heißt "in_array", Schauen wir uns mal ein kleines Beispiel an. Ich habe hier ein Array definiert, gleich mit meinen möglichen Werten für die Auswahlliste. Also ich erwarte jetzt für meine Auswahlliste nur vier Werte: HTML, CSS, Javascript oder PHP. Wenn ich das schon als Array vorliegen habe und definiert habe, kann ich natürlich bei der Erstellung des Formulars auch auf dieses Array zugreifen und hier beispielsweise auch diese Auswahllste direkt mit einem "foreach" erstellen. Bei der Ausgabe kann ich dann überprüfen: Ist der gewählte Wert wirklich wirklich in meinem Array vorhanden? Und das mache ich hier, ich überprüfe erst mal, ist das Thema überhaupt gewählt, und dann, ist "in_array", in dem hier vorher definierten Array, das Thema vorhanden und dann lasse ich das ausgeben. Schauen wir mal an, ob das jetzt funktioniert und ob ich dieses veränderte Formular ebenso leicht manipulieren kann, oder nicht. Und da rufe ich das erst mal wieder auf. Jetzt versuche ich erst einmal wieder hier zu manipulieren, ich sage "Auswahlfelder in Eingabefelder umwandeln", schreibe einen Namen hin, weil das wichtig ist und schreibe jetzt hier irgendeinen anderen Text und schaue ich mal, ob ich das ausgegeben kriege: Nein. Unsere Überprüfung hat funktioniert. Ich habe hier versucht, einen anderen Wert unterzuschummeln, der wird aber aber nicht ausgegeben. Wenn ich hingegen einen der vorgesehenen Werte wähle, dann funktioniert das natürlich. Das heißt, für Auswahllisten empfiehlt es sich mit "in_array" zu überprüfen, ob der Wert wirklich den vorgesehenen entspricht. Ansonsten gibt es viele allgemeine Möglichkeiten, den Input zu prüfen. Zum Beispiel können Sie "is_string" verwenden, um zu schauen, ob an einer Stelle wirklich auch ein String eingegeben wurde, und nicht ein Array, oder so. Dann gibt es aber auch eine spezialisierte Erweiterung in PHP, die direkt dafür gemacht ist, Input zu prüfen. Das ist die Filter-Erweiterung und dafür schauen wir uns jetzt einmal ein Beispiel an. Wenn Sie jetzt daran denken, was man auch häufig braucht, beispielsweise eine E-Mail-Adresse zu überprüfen, dann könnte man das natürlich selbst mit regulären Ausdrücken machen, aber das ist mühsam so einen regulären Ausdruck zu schreiben und außerdem wäre es auch unsinnig, weil natürlich sich schon andere Leute darüber Gedanken gemacht haben, und das auch schon entwickelt haben und deswegen ist es für solche Fälle praktischer beispielsweise auf die Filter-Erweiterung zurückzugreifen, die intern natürlich auch mit so etwas wie regulären Ausdrücken arbeitet, aber Sie müssen diese dann nicht selber angeben. Schauen wir uns an, wie man diese Filter-Erweiterung nutzen kann. Ich habe jetzt hier eine E-Mail Adresse, eine fiktive und ich verwende jetzt eine Funktion, die in der Filter-Erweiterung definiert ist, "filter_var", die dient dazu, Variablen zu filtern, der übergebe ich zuerst einmal hier die Variable, die ich gerne filtern möchte, dann sage ich, auf was ich hier prüfen möchte und ich sage: Ist es eine gültige, ist es eine korrekte E-Mail? und den Rückgabewert vergleiche ich dann mit "=== false" und je nach Ergebnis lasse ich ausgeben: Die E-Mail-Adresse ist gültig oder die E-Mail-Adresse ist nicht gültig. Schauen wir dann auch dieses Ergebnis hier an: Da wird natürlich ausgegeben. Die E-Mail-Adresse ist gültig. Wenn ich jetzt einmal hier eine Änderung durchführe und mal etwas mache, was eindeutig natürlich nicht gültig ist und das hier aktualisiere, dann hat das geklappt. Also, es wird mir angezeigt, dass die E-Mail-Adresse nicht gültig ist. Die Filter-Erweiterung bietet noch viele weitere Möglichkeiten. Hier zum Beispiel, in diesem kleinen Skript hier, sehen Sie, dass Sie auch Zahlen testen können. und Sie können hier auch testen, ob Zahlen sich in einem bestimmten Bereich befinden. Ich habe jetzt hier mal ein Beispiel gebaut, wo ich überprüfen möchte, befindet sich die Zahl zwischen 3 und 99. Und hier sehen Sie, erstelle ich ein Array, was wiederum aus einem Array besteht, wo ich den Mindestwert und den maximalen Wert angebe. Dann rufe ich wieder hier diese Filterfunktion auf, übergebe ihr den Wert, den ich überprüfen möchte, hier sage ich über eine Konstante, auf was möchte ich prüfen und als Drittes übergebe ich meine Optionen. Im Beispiel lasse ich dann das Ergebnis mit "var_dump" ausgeben. Schauen wir uns auch dieses einmal an hier: Sie sehen, die Zahl wird dann zurückgegeben, das war ja auch vier, und es hat geklappt. Wir können jetzt gleich ansehen, was passiert, wenn ich hier einen Wert eingebe, der nicht passt. Im Beispiel überprüfe ich hier, ob die Zahl zwischen 3 und 99 ist, Wenn ich jetzt hier als Zahl einmal 2 angebe und das Ganze hier aktualisiere, dann erhalte ich als Ergebnis den Wert "false", den booleschen Wert "false". Das heißt, das kann ich auch in meine Überprüfungen einbauen. Wichtig ist also, wenn Sie mit Formularen und so arbeiten, dass Sie daran denken, den Output über htmlspecialchars oder ähnlich zu maskieren und für die Filterung des Inputs gibt es neben den allgemeinen Möglichkeiten, wie beispielsweise auch "str_length" für die Länge eines Strings auch die darauf spezialisierte Filter-Erweiterung in PHP.

PHP 5.4 & MySQL 5.6 Grundkurs

Steigen Sie auch ohne Vorwissen in die Programmierung PHP- & MySQL-basierter Webseiten ein und lernen Sie die Sprachgrundlagen wie Bedingungen, Schleifen, Funktionen usw. kennen.

7 Std. 9 min (86 Videos)
Sehr wertvoll
Peter F.
PHP und MYSQL, sehr gut erklärt. Die Beispiele sind sehr gut nachzuvollziehen und verständlich erklärt. Behandelt alle wichtigen Themen, so dass man mit üben beginnen kann. Eignet sich sehr gut als Nachschlagewerk
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!