Formularfelder per EMail versenden, sicher!
Kasandra
- php
ich habe ein Formular, das man auf meiner Webseite ausfüllen kann, nach dem absenden schicke ich es an mich. Jetzt hab ich gelsen, das man auch Schadcode damit übermitteln kann. Wie kann ich dem vorbeugen.
Ich habe folgende Formularfelder:
Name
Email
Betreff
Text
diese würde ich gerne so sichern, das kein Schadcode beim versenden drin ist.
Gibt es dafür umwandlungen in PHP.
Gruß
Kasandra
Wenn ich es richtig verstehe, müsste es so funktionieren und sicher sein:
mysql_real_escape_string(htmlentities('Daten aus dem Formular'));
Om nah hoo pez nyeetz, Kasandra!
diese würde ich gerne so sichern, das kein Schadcode beim versenden drin ist.
Wenn ich es richtig verstehe, müsste es so funktionieren und sicher sein:
mysql_real_escape_string(htmlentities('Daten aus dem Formular'));
Du musst immer nur das escapen, was tatsächlich Schaden anrichten kann. Also beispielsweise SQL-Syntax, wenn du die Daten in einer Datenbank speichern möchtest.
⇒ mysql_real_escape_string('Daten aus dem Formular');
Die besonderen HTML-Zeichen können und sollen dabei ruhig in der DB stehen. htmlentities ist dabei natürlich der overkill, denn, eine sinnvolle Zeichenkodierung (UTF-8) und deren korrekte Angabe vorausgesetzt, müssen die Umlaute nicht verstümmelt werden. Du kannst also vergessen, dass du je wusstest, dass die Funktion htmlentities existiert. ;-)
Bei der Ausgabe im HTML-Kontext können natürlich auch wieder Probleme auftauchen. Dafür ist htmlspecialchars (konvertiert nur >, <, & sowie je nach Einstellung Anführungszeichen) ausreichend.
⇒ htmlspecialchars('Daten aus der Datenbank')
Dann kann dir auch keiner schädlichen, nervigen JavaScript-Code unerschieben, weil aus
„<script … >“ „<script … >“ wird, was im Browser wieder als „<script … >“ dargestellt wird ohne ein HTML-Tag zu sein.
Matthias
Moin
⇒ htmlspecialchars('Daten aus der Datenbank')
Dann kann dir auch keiner schädlichen, nervigen JavaScript-Code unerschieben, weil aus
„<script … >“ „<script … >“ wird, was im Browser wieder als „<script … >“ dargestellt wird ohne ein HTML-Tag zu sein.
Wenn man die tags komplett entfernen möchte kann man vor htmlspecialchars noch die Funktion strip_tags () anwenden, die jegliche html-tags aus dem Text entfernt.
Gruß Bobby
Tach!
Wenn ich es richtig verstehe, müsste es so funktionieren und sicher sein:
mysql_real_escape_string(htmlentities('Daten aus dem Formular'));
Eine Email ist kein Gemisch aus Datenbank und HTML. Insbesondere nicht die Kopfzeilen. Im verlinkten Kontextwechsel-Artikel steht doch drin, was bei Email zu beachten ist.
dedlfix.