0

クライアントは最近、ホストからスパム警告を受け取りました。

問題を古いお問い合わせフォームにピン留めしたと思います。フロント エンドの単純な html とバック エンドの単純な PHP スクリプト。

    if ($_POST['submit'] == "Send"){

    //START SEND MAIL SCRIPT 
    $mail = $_POST['email'];
    $to = "me@gmail.com";
    $subject = "Message from Website Contact Us Form";
    $headers = "From: Contact us Form <webmaster@website.co.uk>";
    $message = "Message from Contact Us Form\n\n";
    $message .= "\nName: " . $_POST['contactname'];
    $message .= "\nEmail: " . $_POST['contactemail'];
    $message .= "\nTelephone: " . $_POST['contactphone'];
    $message .= "\n\n\nMessage:\n" . $_POST['contactmessage'];


        if(mail($to,$subject,$message,$headers)) {

                header('Location: http://www.website.co.uk/contact-us/?action=success');

        }else{

                header('Location: http://www.webisite.co.uk/contact-us/?action=fail');                          

        }//END IF MAIL

}//END SCRIPT

投稿変数を適切にサニタイズする、キャプチャを使用する、非表示の「ハニーポット」空白フィールドを使用する、js トリックなどを修正する方法を知っています (このスクリプトの外観も気に入っていますhttp://www.alt-php- faq.com/local/115/ )

しかし、何が起こっていたのかを理解するために、このスクリプトがどのように操作されているかを知りたいのです。変数を投稿する外国のスクリプトですが、「me@gmail.com」以外の誰かにメールを送信するにはどうすればよいですか。

ありがとう

4

2 に答える 2

1

投稿データのエスケープを行っていません。つまり、このフォームはインジェクション攻撃に対して脆弱です。

彼らがどのようにそれをしたかは言えませんが、おそらくそれが起こったのです。

于 2011-12-30T14:17:34.977 に答える
1

$message .= "\nName: " . $_POST['contactname'];このようなラインは危険です。が設定されている場合$_POST['contactname']='MegaSteve4 \r\nCc: email1@mail.com, email2@mail.com';、2 回使用するとスパムメールが届きます。

よく見てください。さらにヘッダーを追加します。この場合、Cc . Ccが未加工の電子メール ヘッダーかどうかはわかりません。しかし、あなたがその考えを理解してくれることを願っています。

于 2011-12-30T14:30:33.877 に答える