Hallo,
Bitte wie muss ich das nachstehende Script ändern, ohne dass es (eventuell angreifbar für Spammer wird. Wer kann einem PHP-Einsteiger wie mir, rasch unter die Arme greifen? Also 3-4 Variablen zusammenfügen als Eine und zusätzliche Zeilen in PHP einbauen mit dem vorhandenen Script.
mit dieser Änderung des einfachen Formmailers von Patrick Canterino wirst Du anfällig für Header-Injektion.
Welchen Betreff sollen die Mails erhalten?
#$strSubject = 'Online-Formular';
$strSubject = $_POST["Betreff"];
Du solltest alle Zeilenumbrüche aus $strSubject entfernen, bzw. bei Vorhandensein von Zeilenumbrüchen keine Mail verschicken. Siehe dazu folgenden Archivthread, der noch weitere Probleme beim Mailversand anspricht. Noch besser unterbleibt das Kopieren in eine zusätzliche Variable, damit Du gleich siehst, dass dieser Inhalt aus einer potentiell bösen Eingabe kommt.
# Pseudocode: Validierung der Eingabe im Betreff-Feld
Wenn $_POST['Betreff'] Zeilenumbruchzeichen (\r oder \n) enthält
Leite auf eine Fehlerseite weiter
Ende Wenn
Merke: Jede Eingabe ist böse!
Entsprechend benötigst Du grundsätzlich gesehen eine Validierung für Deine Eingabefelder. Bitte schieße dabei aber nicht über das Ziel hinaus (haben wir hier schon oft gesehen). Du darfst Deine Validierung hier gerne vorstellen.
Ob es sich bei Deinem Formular noch lohnt, alle Felder in einer Schleife zu durchlaufen, ist fraglich - wie bereits Ingo erwähnte.
Das Entfernen der Magic Quotes, so vorhanden, solltest Du am Skriptbeginn vornehmen. Wie es geht, entnimmst Du dem zweiten Beispiel im PHP-Handbuchabschnitt Disabling Magic Quotes.
Warum am Anfang? Dann hast Du es an zentraler Stelle und kannst Dein Skript leicht korrigieren, wenn dieses Feature mit PHP6 verschwindet.
Freundliche Grüße
Vinzenz