phpbar.de logo

Mailinglisten-Archive

[php] Wie kann man verschiedene Daten aus einem Formular verknüpfen.

[php] Wie kann man verschiedene Daten aus einem Formular verknüpfen.

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Mai 7 08:30:09 CEST 2007


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