php mail header injection önleme

2 Cevap php

Posta fonksiyonu için php manuel sayfasında, "başlık enjeksiyonu önlemek için özen" diyerek bir kullanıcı yorum vardı.

Benim uygulamada, ben posta işlevini kullanmak, ve ben bir işleve parametre olarak kullanmak sadece kullanıcı girişi e-posta adresi.

Ben regex ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$ kullanarak e-posta adresi bir ön kontrol yapmak.

Bu da başlık enjeksiyon karşı önleyecek?

Thanks,
jrh

2 Cevap

Birisi böyle bir şey enjekte etmek isterim:

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

Yeni başlık bilgisi tanımlamak için gereklidir \r\n, hangi izin vermez. Yani uygulama güvenlidir.

Kafa enjeksiyon Eğer mesaj başlıkların içinde kullanıcı tarafından sağlanan malzeme koymak yalnızca bir risktir. Bir tipik örnek Cevapla başlığı ayarlamak için nakledilen e-posta adresini kullanıyor.

Bu benim ne kullanın:

$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);