这个联系我们的脚本是如何易受攻击/被操纵的



客户端最近收到了来自主机的垃圾邮件警告。

我想我已经把问题指向一个旧的联系我们的形式。前端是简单的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 Formnn";
    $message .= "nName: " . $_POST['contactname'];
    $message .= "nEmail: " . $_POST['contactemail'];
    $message .= "nTelephone: " . $_POST['contactphone'];
    $message .= "nnnMessage: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'或者如果他们强制抄送/密件字段,为什么我没有得到所有的垃圾邮件??

谢谢

像这样的$message .= "nName: " . $_POST['contactname'];可能危险。如果设置了$_POST['contactname']='MegaSteve4 rnCc: email1@mail.com, email2@mail.com';,则2个用户将收到垃圾邮件。

看仔细。它附加了更多的标头。在本例中Cc。我不确定如果Cc是一个原始的电子邮件标题。但是我希望你能明白。

您没有对post数据进行任何转义。这意味着这个表单很容易受到注入攻击。

我不能告诉你他们是怎么做到的,但事情可能就是这样。

最新更新