php mail prevenzione iniezione intestazione
-
19-09-2019 - |
Domanda
Nella pagina manuale di php per la funzione di posta, c'era un commento utente dire "prendersi cura per evitare l'iniezione di testa".
Nella mia domanda, io uso la funzione di posta elettronica, e l'unico input dell'utente uso come parametro alla funzione è l'indirizzo di posta elettronica.
faccio un controllo preliminare dell'indirizzo di posta elettronica utilizzando il ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$
regex.
Sarà questo impedisce anche contro l'iniezione di testa?
Grazie,
JRH
Soluzione
Qualcuno vorrebbe iniettare qualcosa di simile:
user_address@domain.com
CC: spam_address1@domain.com, spam_address2@domain.com, spam_address3@domain.com
non consentono \ r \ n che è necessaria per la definizione di nuovi intestazione informazioni. Quindi, l'applicazione è sicura.
Altri suggerimenti
iniezione di intestazione è un rischio solo se si mette roba fornito dall'utente all'interno delle intestazioni dei messaggi. Un esempio tipico sta usando l'indirizzo di posta elettronica inviato per impostare il Reply-To.
Questo è quello che io uso:
$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);