Tom: Problem mit Kontaktformular

Beitrag lesen

Hello,

Stimmt, jetzt funktioniert alles wie es soll.
Vielen Dank auch für die interessante Erklärung.

Wie sieht es denn mit der Sicherheit aus, wenn ich die Angaben aus dem Formular mit isset überprüfe und zusätzlich einen Spamschutz einbaue?

$abgesendet= mail($empfaenger,$betreff,$_POST['inhalt'],"From: ".$_POST['name']." <".strtolower($_POST['absender']).">");

Das Problem sind alle Werte, die Einzug in die Header einer eMail nehmen.
Das sind

bool mail  ( string $to  , string $subject  , string $message  [, string $additional_headers  [, string $additional_parameters  ]] )

also kurz geschrieben:

mail($to, $subject, $message, $headers, $parameters)

$to
  $subject
  $headers
  ($parameters)

Wenn Du nun ein "From: email@example.org" angeben lassen willst, und jemand schreibt Dir dort

"From: email@eaxamle.org\r\nTo: <ganz viele adressen>"

rein, dann wird die email ggf. an jemand ganz anderen, und ggf. auch an ganz viele andere Leute verschickt...

das musst Du eben abfangen.

Es wurde hier oft genug diskutiert, wie man das machen sollte. Ich persönlich komme immer wieder zu dem Ergebnis, dass es für die Sicherheit ausreichen sollte, wenn man genau ein '@' verlangt aunf verhindert, dass "\r\n", "\r" oder "\n" enthalten sind in diesen Zeilen.

Sind Umbruchzeichen enthalten, die ja über das angebotene Formular normalerweise gar nicht hingelangen konnten, dann kann es scih nur um einen Misbrauchsversuch handeln, und man sollte sofort abbrechen.

Wenn das From-Feld daten enthielt, aber kein @, lohnt sich das Weiterarbeiten für diesen Client eigentlich auch nicht. Vielleicht sollte man ihn dann in einen "netten Dialog" verstricken :-))

Für das Dubject-Feld gilt für die Zeilenumbrüche das Gleiche.

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)