PHP'nin mail () fonksiyonu enjeksiyon herhangi bir riski var mı?

3 Cevap php

Aşağıdaki kodu herhangi bir potansiyel güvenlik riski olup olmadığını merak ediyorum. Bir kullanıcı yorum gönderdiğinde zaman blogumda kullanmak, bana bir kısa mesaj gönderir:

mail('cellnumber@messaging.sprintpcs.com', '',
     "Comment posted by $name: $comment",
     "From: comments@example.com");

Nerede $name ve $comment gerçekten herhangi bir şekilde temizlenmiş değil kullanıcı girilen değerlerdir. Bir kullanıcı burada kötü niyetli bir şey yapabileceğini olasılığı var mı? mail() belgeleri bu konuda hiçbir şey söylemiyor, ama sadece doğrudan bir dizeye kullanıcı tarafından girilen değerleri sopa yanlış geliyor. Gerçek bir risk var mı yoksa sadece paranoyak oluyorum?

3 Cevap

Sürece tüm kullanıcı-malzeme olarak i posta tutulur body, ardından enjeksiyon riski yoktur.

Ekleri dahil olmak üzere - ancak, kısa sürede bir kullanıcı olarak o zaman ekstra başlıkları enjekte ve istenmeyen keyfi e-posta adresleri için kullanabilirsiniz ya da tamamen farklı bir mesaj içerir gibi şeyler yapabilirsiniz, posta başlıklarını etkileyebilir.

Eğer başlıklarını etkileyen bölgelerinde satırsonlarının kontrol ve görünür eğer reddederseniz, o yeterli olmalıdır. SMTP standart başlık satırları ayırmak için CRLF'yi kullanır, ancak AFAIK, birçok Unix tabanlı sunucular (ki bu sistemlerde yerli çizgi ayırıcı çünkü) sadece LF kullanmak istiyorum. Daha da üst baş gönderirken posta relayer sonra dönüştürür.

Isminin içinde satır karakteri farkında olun. İki sonucu (erm.. İngilizcemi pardon, iki newlines birbiri ardına) newlines SMTP "başlıklarını sonu" anlamına gelir.

Ayrıca, sırası `\ n. \ N '(sadece bir süre ile boş satır)" mesajının sonu "anlamına gelir.

EDIT: Evet, spam riski var! Ne $ adı aslında içeriyorsa:

 someonesName
 CC: spamsubject@domain.com; anotherspamsubject@domain.com

(Yani bir şey daha başlıklarını enjekte etmek)?

EDIT2: "ad" ve "yorum" iletinin gövde parçası hem de olduğunu fark etmedi. Sonra spam konusunda benim fikrim geçerli değil.

PHP güvensiz şeylerle dolu, ama ben risk burada bir çok emin değilim.

Kesinlikle bir çok uzun comment mesaj boyutuna sahip olabilir ne olursa olsun sınır taşma olabilir. Muhtemelen size zarar vermez.

PHP'nin $XXX sözdizimi dize genişletir, ancak herhangi bir daha fazla değerlendirme yapmaz XXX bunu yapar? $XXX eval() çeşit gibi çalıştı varsa, uzaktan kod yürütme bir dünya için olurdu, ama bu durum olduğunu sanmıyorum.

Bu içsel SMTP yapıyor, sonra bir . boş bir çizgi takip tek hat üzerinde bir postanın sonuna işaret olacağını ve teorik bir saldırganın mailler kaçırmak ardışık hatlarında fazla metin ile takip olabilir Başkasına diğer bazı mesaj posta. PHP ilk etapta böyle bir dize tanımak ve kaçış değilse budur. Bu içine bakmak istiyorum şeydir.