2012-03-07 15 views
2

私は、Webサイト上のHTMLファイルから電子メールを送信するためにPHPスクリプトを使用したいと思います。 このPHPスクリプトは、ハッキングやスパムに対して十分に安全でしょうか?セキュアなPHPのメールスクリプト

<?php 

$to = "[email protected]"; 
$subject = "Sent from site"; 

$email = $_POST['emailFrom']; 
$message = $_POST['message']; 

$email = filter_var($email , FILTER_SANITIZE_EMAIL); 
$message = filter_var($message , FILTER_SANITIZE_EMAIL); 

$message = $email . $message; 

mail($to, $subject, $message, "From: [email protected]"); 
?> 
+1

いいね。投稿できるものがチェックされている限り、あなたは安全な側です。 – Olaf

+1

おそらくhttp://codereview.stackexchange.com/に適しています。 – j08691

+2

あなたのスクリプトでは、自分の受信者アドレスを指定できない限り、スパム発信者にとっては役に立ちません。 – ghoti

答えて

1

FILTER_SANITIZE_EMAILは、文字列から不正な電子メールアドレス文字を削除します。これは電子メールの内容にとって最良の選択肢ではありません(ただし、電子メールアドレスの場合には便利です)。 HTML特殊文字を削除するのはXSS攻撃を防止するのに便利ですが、メッセージに(つまり今すぐ)<と>を投稿する正当な理由があることは注目に値します。したがって、これらの文字をHTMLエンティティに変換する方が良いです。

I.
<は& ltになります。
および>は& gtになります。そのエンティティにHTML文字を変更するためにそう

は交換してください:
$message = filter_var($message , FILTER_SANITIZE_EMAIL);
それはよさそうだということ以外 $message = htmlspecialchars($message);
と、しかし、データベースが含まれている場合は、データベースのsanitisationも追加する必要があります。