Mailinglisten-Archive |
Hallo Marita, Am Sonntag, 6. Mai 2007 schrieb Marita Betz: > Da ich noch nicht sehr viel Erfahrung mit PHP habe, stehe ich jetzt > gerade etwas auf dem Schlauch. > > Hier mal mein formularausw1.php: > > <? > > if(isset($submit)) > { > echo $Anrede; > echo $Email; > echo $Notiz; > } > $nachricht = $Anrede .$Email .Notiz; > $empfaenger = 'm.betz at gaponline.de'; > $betreff = 'Neues Email von der Webseite '; > $header = 'MIME-Version: 1.0' . "\r\n"; > $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; > $header .= 'From: feedback at text.de' . "\r\n"; > > mail($empfaenger, $betreff, $nachricht, $header); > > echo "habe fertig."; > > ?> > > Ich hatte da zuerst da stehen: > mail($empfaenger, $betreff, $name, $Email, $Notiz, $header); > > Und da hat das Programm gemeckert. > > Ihr werdet Euch evtl. fragen, warum ich das so mache. > > Eigentlich wollte ich die einzelnen Eingaben direkt bei mail() rein > schreiben, aber da darf man anscheinend nur 5 Sachen übergeben und > keine 6. Da Du zu Deiner Frage ja schon jede Menge Antworten bekommen hast, möchte ich mich auf einen äußerst wichtigen Hinweis beschränken, weil Du - wie Du sagst - mit PHP, und ich vermute mit Programmierung allgemein, noch nicht soviel Erfahrung hast. Generell ist es von fundamentaler Bedeutung, daß Du jegliche Benutzereingabe vor der Verwendung in einem Programm prüfst. (Im angloamerkanischen Raum sagt man gerne "to sanitise" dazu. :-D) Zu dieser Prüfung gehört u.a., ob der Variablentyp stimmt, ob die Feldlänge stimmt, ob der Wertebereich bzw. Inhalt stimmt. Dabei ist Variablen, in denen Du Zahlen als Übergabe erwartest, genau dieselbe Aufmerksamkeit zu widmen, weil gerade hier - wenn man an SQL-Einschleusung denkt -, hervorragende Angriffsmöglichkeiten bestehen, wenn man anstatt einer Zahl z.B. einen Teil eines SQL-Befehls übergibt und dieser ungeprüft in eine Datenbankabfrage übernommen wird. Bei Mailformularen und der Verwendung der Funktion mail() sind diese Sicherheitsmaßnahmen von besonders elementarer Bedeutung, weil Du Dein Mailformular mit einer direkten Übernahme der übergebenen Daten in die Funktion oder durch eine unzureichende Prüfung der Daten in Null-Komma-Nichts in eine Spamschleuder erster Klasse verwandelst. Die mail()-Funktion selbst beinhaltet nämlich keinerlei Schutzfunktionen, wie z.B. vor allem die Verhinderung von Mail-Header-Einschleusung. Und glaube ja nicht, das würde Dich nicht treffen wird, weil Dich keiner kennt. ;-) Bei jeder Website, die ich beruflich und privat betreue, wird regelmäßig versucht, die Mailformulare für den Spamversand zu mißbrauchen. Die Gefahr ist also mehr als real. Sollte der Spamversand dann auch noch funktionieren, kann das zu juristischen Problemen führen. Es gab hier mal u.a. folgende Diskussion, die Du Dir zu diesem Thema einmal durchlesen kannst: http://lists.phpbar.de/pipermail/php/Week-of-Mon-20051128/021444.html Dort wird u.a. auch folgender Artikel erwähnt, auf den ich Dich auch hiermit gesondert hinweisen möchte: http://www.heise.de/security/artikel/66815 Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive