PHP Form Mailer so Sicher?

Hallo,

ich bastel gerade an einer kleinen Webpräsenz. Dort steht mir nur PHP zur Verfügung. Auf dieser Seite würde ich gerne ein Kontaktformular einbinden und bin dann darauf gestoßen.

http://aktuell.de.selfhtml.org/artikel/php/form-mail/

<?php

/**
 * Konfiguration 
 *
 * Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
 * 
 * Das Skript bitte in UTF-8 abspeichern (ohne BOM).
 */
 
// An welche Adresse sollen die Mails gesendet werden?
$zieladresse = 'IhrName@EXAMPLE.com';

// Welche Adresse soll als Absender angegeben werden?
// (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$absenderadresse = 'ihrAndererName@EXAMPLE.com';

// Welcher Absendername soll verwendet werden?
$absendername = 'Formmailer';

// Welchen Betreff sollen die Mails erhalten?
$betreff = 'Feedback';

// Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
// Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$urlDankeSeite = 'http://www.EXAMPLE.com/IhrName/IhreSeite.htm';

// Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$trenner = ":	"; // Doppelpunkt + Tabulator

/**
 * Ende Konfiguration
 */

if ($_SERVER['REQUEST_METHOD'] === "POST") {

	$header = array();
	$header[] = "From: ".mb_encode_mimeheader($absendername, "utf-8", "Q")." <".$absenderadresse.">";
	$header[] = "MIME-Version: 1.0";
	$header[] = "Content-type: text/plain; charset=utf-8";
	$header[] = "Content-transfer-encoding: 8bit";
	
    $mailtext = "";

    foreach ($_POST as $name => $wert) {
        if (is_array($wert)) {
		    foreach ($wert as $einzelwert) {
			    $mailtext .= $name.$trenner.$einzelwert."
";
            }
        } else {
            $mailtext .= $name.$trenner.$wert."
";
        }
    }

    mail(
    	$zieladresse, 
    	mb_encode_mimeheader($betreff, "utf-8", "Q"), 
    	$mailtext,
    	implode("
", $header)
    ) or die("Die Mail konnte nicht versendet werden.");
    header("Location: $urlDankeSeite");
    exit;
}

header("Content-type: text/html; charset=utf-8");

?>

Funktionieren tut das ganze soweit problemlos. Meine Frage ist allerdings, ob das ganze auch halbwegs sicher ist oder ob ich damit den Grundpfeiler für eine Spamschleuder sondergleichen gieße.

Absenderadresse und Zieladresse, werden ja per Variablen besetzt.
Ist es z.B. Möglich, dass jemand diese variablen mit Request-Parametern überschreiben kann?

Oder ist daran irgendwas anderes nicht mehr ganz up-to-date?

Habe nicht wirklich viel mit PHP am Hut.

Besten Dank

Wieso solltest du da mögliche „Sicherheitsprobleme“ haben, geschweige denn als „Spamschleuder“ werden?

Grundlegend: Egal ob du nun **PHPMailer **nutzt oder einfach nur die mail() Funktion - Beides kann als Spam erkannt werden - Es kommt immer darauf an, was du machst.

Der Sinn des PHPMailers ist es einfach, alle Grundfunktionen bereitzustellen ohne dass du selbst (als Anwender) immer wieder dich um die implementierung kümmern musst. Das fängt bei den Standardheadern an und hört bei Attachments/Boundarys auf.

Ist es z.B. Möglich, dass jemand diese variablen mit Request-Parametern überschreiben kann?

Globale Sicherheitsfrage sollte dabei liegen, wie dein Server konfiguriert ist.

Beispiel: ist **register_globals **eingeschaltet, dann ist es ohnehin wurscht, da diverse Variablen ohnehin überschrieben werden könnten und somit dein komplettes System oder die Seite gefährdet ist. Da würde ich mir um den PHPMailer also dann keinerlei Sorge machen.

Oder ist daran irgendwas anderes nicht mehr ganz up-to-date?

Was du da verwendest: Ja.
Selfhtml ist ohnehin ein facher Einstieg. Dort werden oftmals viel zu alte Dinge vermittelt. Schau mal lieber hier: PHPMailer-Lite v5.1

Ich kann dir das phpforum.de empfehlen, da bekommst du sehr kompetente Hilfe. Was natürlich mich dort Stört ist, dass meist Standardantworten gegeben werden und auf FAQ-Mist hingewiesen wird, was dem „Anfänger“ oder „Fortgeschrittenem“ nicht so ganz weiterhilft, wenn man Spezielle Fragen hat.

Habe das mit dem PHPMailer überflogen.

Da sendmail vorhanden ist und das Zend-Framework zugeschaltet werden kann, verwende ich nun Zend_Mail.

Da sieht der Code in Verbindung mit einem Template auch ganz passabel aus.

Ich kann dir nur den SwiftMailer wärmstens empfehlen. Wenn man die Introduction kurz querliest, dann bekommt man das auch recht schnell zum laufen. Ich verwende den zusammen mit smarty, das harmoniert auch ganz gut.

Wenn schon, dann lieber twig als template engine :slight_smile:

Gesendet von meinem Nexus 7 mit Tapatalk 2