如何在我的联系表单中防止电子邮件 Header 注入?
How can I prevent Email Header Injection in my contact form?
我是 PHP 的新手,但设法创建了一个工作联系表。但后来我意识到了电子邮件 Header 注入。我怎样才能以最好的方式防止这种情况发生?不希望我的表格被用来向人们发送垃圾邮件。
这是我的代码:
<?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);
}
它验证您的电子邮件格式,不允许任何类型的注入headers。
我是 PHP 的新手,但设法创建了一个工作联系表。但后来我意识到了电子邮件 Header 注入。我怎样才能以最好的方式防止这种情况发生?不希望我的表格被用来向人们发送垃圾邮件。
这是我的代码:
<?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);
}
它验证您的电子邮件格式,不允许任何类型的注入headers。