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