繁体   English   中英

如何防止我的联系表中出现电子邮件标题注入?

[英]How can I prevent Email Header Injection in my contact form?

我是PHP的新手,但设法创建了一个有效的联系表。 但是后来我知道了电子邮件标题注入。 如何才能最好地防止这种情况发生? 不想让我的表格用来向垃圾邮件发送垃圾邮件。

这是我的代码:

<?php 
if ($_POST["email"]<>'') { 
    $ToEmail = 'FixedEmail@domain.com'; 
    $EmailSubject = 'Email Subject'; 
    $mailheader = 'From: donotreply@domain.com' . "\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"); 

?>

只需将电子邮件验证字段如下所示:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

if ($email === FALSE) {
    echo 'Invalid email';
    exit(1);
}

它验证您的电子邮件格式,该格式将不允许任何形式的标题插入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM