Hallo,
ich möchte auf einer Web-Seite Formulare einsetzen.
na prima, nur zu!
HTML bringt ja schon so einige Nachteile mit, z.B. keine Sonderzeichen (<>") in Eingabefeldern oder in anderen HTML-Elementen - klar, muss man halt ersetzen.
Wie jetzt?
Beim Ausgeben des Formulars? Da hast du ja entweder nur statisches HTML, wo du _einmal_ die Sonderzeichen von Hand ersetzen musst; oder du hast eine serverseitige Scriptlogik, die auch noch schnell die Sonderzeichen umcodieren kann. Die paar Mikrosekunden reißen's ja nicht raus.
Oder beim Ausfüllen und Abschicken? Da spielt das keine Rolle, weil beim Versenden kein HTML mehr im Spiel ist. Stattdessen müssen bestimmte Zeichen URL-codiert werden, aber das macht der Browser beim Absenden des Formulars schon von sich aus.
Es gibt noch andere Probleme, wie z.B. das Browser-Problem ... egal.
Hmm? Was für ein Browser-Problem?
Ein SEHR großes Problem dass mir die Tage aufgefallen ist, ist die Firebug-Extension des Firefox, mit dem man lustig die ganze Seite umbauen kann. D.h. der User kann hidden-Fields löschen die man eigentlich für die Steuerung der Seite bräuchte, den Namen/Value des Submit-Buttons ändern, letzendlich das ganze Ding kaputt machen, und mein PHP/DB-Backend mit Schrott zu müllen.
Moment. Dass man deinem Script irgendeinen Schrott zuschicken kann, ist klar. Dazu braucht man kein Firebug, da reicht es, einfach ein eigenes Formular zu schreiben und dessen Ergebnis an dein Script zu schicken. Eine gründliche Prüfung der empfangenen Daten auf Korrektheit und Plausibilität ist sowieso zwingend nötig. Wo liegt also das Problem (außer in einer Portion Fleißarbeit)?
Nun frage ich mich, wie kann ich mich gegen sowas schützen. Ich könnte die POST/GET Rückgaben validieren, ob das Formular so angekommen ist, wie es sein soll
Genau, und wenn etwas nicht passt, eine Fehlerseite zurückgehen lassen.
Die Lösung?
Validierung der Empfangsdaten. Nicht mehr und vor allem nicht weniger.
So long,
Martin
Ist die Katze gesund,
freut sich der Hund.