客户端最近收到了来自主机的垃圾邮件警告。
我想我已经把问题指向一个旧的联系我们的形式。前端是简单的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数据进行任何转义。这意味着这个表单很容易受到注入攻击。
我不能告诉你他们是怎么做到的,但事情可能就是这样。