Pregunta

En la página PHP Manual para la función de correo electrónico, hubo un comentario de usuario diciendo "tenga cuidado para evitar la inyección de cabecera".

En mi aplicación, uso la función de correo electrónico, y la única entrada del usuario que utilizo como un parámetro de la función es la dirección de correo electrónico.

hago una comprobación preliminar de la dirección de correo electrónico utilizando el ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$ expresiones regulares.

¿Esto también prevenir contra la inyección de cabecera?

Gracias,
JRH

¿Fue útil?

Solución

Alguien querría para inyectar algo como esto:

user_address@domain.com
CC: spam_address1@domain.com, spam_address2@domain.com, spam_address3@domain.com

no permiten \ r \ n que es necesaria para la definición de la nueva información de la cabecera. Por lo que su aplicación es segura.

Otros consejos

inyección de cabecera es un riesgo sólo si pones cosas suministrada por el usuario dentro de las cabeceras de los mensajes. Un ejemplo típico está utilizando la dirección de correo electrónico publicado para establecer la cabecera de respuesta.

Esto es lo que yo 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); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top