Robert Bienert: /Email: Schutz vor Headerinjektion

Beitrag lesen

Hallo Forum!

Ich bastele gerade an einer Mailfunktion, die z.B. auch in Kontaktformularen benutzt werden kann. Der Hintergrund, warum diese Abstraktion um mail() herumbaue liegt darin begründet, dass ich die Funktion nicht überall zur Verfügung habe und mit der Schnittstelle dann z.B. das Speichern in einer Datenbank implementieren kann, ohne den Code des Kontaktformulars großartig ändern zu müssen (nur einen Include austauschen).

Basierend auf meinen Erfahrungen und dieser Forumsdiskussion sollte doch folgender Ansatz einen ausreichenden Schutz bieten, oder:

  
function sendMail($fromName, $fromAddr, $toAddr, $subj, $text) {  
        /* Diese drei Werte koennen fuer Headerinjektionen benutzt  
         * und werden daher extra behandelt.  
         */  
        $subj   = str_replace(array("\n", "\r"), ' ', $subj);  
        $fromName = str_replace(array("\n", "\r"), ' ', $fromName);  
        $fromAddr = str_replace(array("\n", "\r"), '', $fromAddr);  
  
        return mail($toAddr, $subj, $text,  
                "From: \"$fromName\" <$fromAddr>");  
}  

Viele Grüße,
Robert