PHP e-posta enjeksiyon saldırıları önlemek için mevcut en iyi uygulama nedir?

1 Cevap php

Ne bir PHP e-posta formu veri hijyen için bu gün en iyi uygulama olarak kabul edilir?

Şu anda böyle bir şey kullanıyorum ...

$msg = $_POST['msg'];
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$name = $_POST['name'];

$subject = "Message from the MY_WEBSITE website e-mail system";
$message = "From: " . $name . "\n";
$message .= "Email: " . $email . "\n\n";
$message .= $msg;
$headers = "From: " . $email . "\r\n" .
           "Reply-To: " . $email . "\r\n" .
           "X-Mailer: PHP/" . phpversion();

$mailSuccess = mail("me@example.com", $subject, $message, $headers);

Yeterli koruma sadece bu şekilde e-posta alanını filtre mi? / Ben spam karşı korumak için daha etkin komut sertleşmesine gerekir miyim?

Şimdiden teşekkürler!

[EDIT] açıklık, cevaplar şimdiye kadar ben de kendimi izah ettik öneririz beri.

Ben Spambots bu komut ele alma ile prensipte ilgili değilim, ama herkes me@example.com dışında herhangi bir adrese yasadışı e-postalar göndermek için kullanan ile. Bu bir bot içerebilir, fakat aynı derecede bir CAPTCHA testi yenerek bir insan olabilir.

Ne aradığım posta ile gönderilen e-posta () yöntemi kaçırıldı değil sağlayacaktır PHP. Bu muhtemelen bir ifadenin veya filtre ya da sadece belirli karakter soyarak ki benzer. Tekrar teşekkürler. [/ EDIT]

1 Cevap

Ben bunu istiyorum:

  • CAPTCHA kullanmak;
  • Konu veya vücut herhangi bir HTML etiketleri içeriyorsa göndermek için başarısız. Not: Ben onları şerit demedim. Sadece e-posta göndermek ve neden kullanıcıya bir hata mesajı vermez. Kendinize bir süzülmüş spam mesajı göndererek bir anlamı yok. Sadece göndermek yok;
  • herhangi bir yüksek veya düşük karakterler (filter_vars () bunu yapabilirsiniz) dışında şerit;
  • (almak veya bazı diğer uygun limitli) 4000 karakterler, diyelim ki, mesajı sınırlamak;
  • mesajı geçerli siteye işaret etmiyor herhangi bir URL içeriyorsa başarısız;
  • belki How do you stop scripters from slamming your website hundreds of times a second? mesaj gönderen bir insan olmadığından emin olmak için gelen bazı teknikler kullanın.