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

È stato utile?

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); 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top