php
  • spam-prevention
  • email-headers
  • header-injection
  • 2017-06-04 21 views 1 likes 
    1

    私はPHPの初心者ですが、実際の連絡先フォームを作成することができます。しかし、その後私はEmail Header Injectionを知っていました。可能な限り最良の方法でこれを防止するにはどうすればよいですか?私のフォームを迷惑メールにしたくない。連絡先フォームで電子メールヘッダの挿入を防止するにはどうすればよいですか?

    これは私のコードです:?以下に示すように

    <?php 
    if ($_POST["email"]<>'') { 
        $ToEmail = '[email protected]'; 
        $EmailSubject = 'Email Subject'; 
        $mailheader = 'From: [email protected]' . "\r\n" . 
         'Reply-To:' .$_POST["email"]. "\r\n" . 
         'MIME-Version: 1.0'."\r\n". 
         'Content-Type: text/html; charset=utf-8'."\r\n". 
         'X-Mailer: PHP/' . phpversion(); 
        $MESSAGE_BODY .= "<b>Navn:</b> ".$_POST["name"]."<br />"; 
        $MESSAGE_BODY .= "<b>Telefon:</b> ".$_POST["telephone"]."<br />"; 
        $MESSAGE_BODY .= "<b>Email:</b> ".$_POST["email"]."<br /><br />"; 
        $MESSAGE_BODY .= "".nl2br($_POST["message"])."<br />"; 
        mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
    

    >

    +0

    電子メール形式のコンテンツの場合は、$ _POST ["email"] '検証を追加するだけで、これ以上の埋め込みはできなくなります – Kazz

    答えて

    0

    ちょうど電子メールフィールドの検証を置き:

    $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); 
    
    if ($email === FALSE) { 
        echo 'Invalid email'; 
        exit(1); 
    } 
    

    それはいずれも許可されませんあなたの電子メールの形式を検証注入されたヘッダーの種類。

    +0

    @Ashish Tiwariのお返事ありがとうございます!だからちょうどこのコードをどこかにランダムにコピー/ペーストすることで、他人がヘッダーを挿入したり、自分のフォームをスパムに使うのを防ぐことができますか?それとも、私はそれを仕事のどこかに置く必要がありますか? – Naguah

    +0

    @Naguahメールからのヘッダーの挿入を防止するだけです。もし誰かが$ _POST ['email']から何かを注入しようとすると、それは許可されません。上記のコードは$ _POST ['email']にのみ適用されます。 –

    +0

    おそらくばかげた質問@Ashish Tiwariですが、私は既にコンタクトフォームのHTMLに制限を入れているので、 ''どのようにしてこれを操作できますか?あなたのPHPは私のhtmlと同じことをしていますか? – Naguah

    関連する問題