2011-12-30 4 views
0

クライアントが最近ホストからスパム警告を受け取りました。このスクリプトはどのようにスクリプトの脆弱性/操作されていますか?

私は古い連絡先フォームに問題を指摘していると思います。フロントエンドのシンプルなHTMLと、バックエンドのシンプルなPHPスクリプト。

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

    //START SEND MAIL SCRIPT 
    $mail = $_POST['email']; 
    $to = "[email protected]"; 
    $subject = "Message from Website Contact Us Form"; 
    $headers = "From: Contact us Form <[email protected]>"; 
    $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 

私は、このようなポストは隠された「ハニーポット」空白のフィールドを使用して、CAPTCHAのを使用して、適切にvarsの消毒として、それを修正するために救済を知って、JSトリックなどなど(I、あまりにもhttp://www.alt-php-faq.com/local/115/このスクリプトの表情など)

何が起こっているのか理解するのを助けるために、このスクリプトがどのように操作されているか知りたいと思っています。'[email protected]'以外の人にメールを送信する方法や、cc/bccフィールドを強制的に強制する場合は、どうしてすべてのスパムも取得できないのですか?

ありがとうございます。

+1

実際にGmailアドレスを使用している場合は、おそらくスパムをブロックしている可能性があります。 – DampeS8N

+0

あなたは '$ mail'変数をどこで使いますか?これは注射の攻撃に最も苦しんでいるようです。 – bummzack

答えて

1

このような行は$message .= "\nName: " . $_POST['contactname'];となります。危険なです。 $_POST['contactname']='MegaSteve4 \r\nCc: [email protected], [email protected]';が設定されている場合、2回使用すると迷惑メールが送信されます。

注意してください。そのヘッダーが追加されています。この場合Ccです。 Ccが生のメールヘッダーであるかどうかはわかりません。しかし、私はあなたがそのアイデアを得ることを望みます。

+0

これを避けるには、投稿データにメールアドレスが1つしか含まれないようにするにはどうすればいいですか?正規表現かもしれない? – ppp

+2

ええ、** RegEx **を使って検証することができます。 :) –

+0

このスクリプト(http://www.alt-php-faq.com/local/115/)は、foreachループを使用しています。多分、ミリ秒数は正規表現よりも遅いですが、うまくいくでしょう。また、同じドメインからフォームが提出された他の素敵なトリックもありますし、ユーザーエージェントの設定などがある場合もあります。これらのものはおそらくボットによって偽装される可能性がありますが、難しくなります...... – megaSteve4

1

あなたは投稿データをエスケープしていません。つまり、このフォームはinjection attacksに脆弱です。

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

関連する問題