php Mail-Header-Injection-Prävention
-
19-09-2019 - |
Frage
Auf der PHP-Handbuch Seite für E-Mail-Funktion, es gab einen Benutzerkommentar sagen: „Sorgfalt Kopf Injektion zu verhindern“.
In meiner Anwendung verwende ich die Mail-Funktion, und die einzige Benutzereingabe I als Parameter an die Funktion verwende, ist die E-Mail-Adresse.
Ich habe eine vorläufige Überprüfung der E-Mail-Adresse die Regex ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$
verwendet wird.
Wird dies auch verhindern, dass gegen Header-Injection?
Danke,
JRH
Lösung
Jemand möchte etwas injizieren:
user_address@domain.com
CC: spam_address1@domain.com, spam_address2@domain.com, spam_address3@domain.com
Sie erlauben nicht \ r \ n , die zur Definition neuer Header Informationen benötigt wird. So Ihre Anwendung sicher ist.
Andere Tipps
Rubrik Injektion ist ein Risiko nur, wenn Sie vom Benutzer bereitgestellte Material in den Nachrichten-Header setzen. Ein typisches Beispiel ist die Verwendung der E-Mail-Adresse geschrieben setzen die Reply-To-Header.
Dies ist, was ich benutze:
$email = preg_replace(array("/\r/i","/\n/i", "/%0a/i", "/%0d/i", "/Content-Type:/i", "/bcc:/i", "/to:/i", "/cc:/i", "/Content\-Transfer\-Encoding\:/i", "/Mime\-Version\:/i" ), "", $email);