Pergunta

Na página manual do php para a função de correio, houve um comentário de usuário dizendo "ter o cuidado de evitar a injeção de cabeçalho".

Na minha aplicação, eu uso a função de e-mail, ea única entrada do usuário eu uso como um parâmetro para a função é o endereço de e-mail.

I fazer uma verificação preliminar do endereço de e-mail usando o ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$ regex.

Será que isso também prevenir contra injeção de cabeçalho?

Obrigado,
JRH

Foi útil?

Solução

Alguém gostaria de injetar algo como isto:

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

Você não permitem \ r \ n que é necessário para a definição de novas informações de cabeçalho. Portanto, sua aplicação é segura.

Outras dicas

Header injeção é um risco apenas se você colocar o material fornecido pelo usuário dentro dos cabeçalhos de mensagens. Um exemplo típico está usando o endereço de e-mail postado para definir o cabeçalho Reply-To.

Isto é o que eu 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top