1

我可以使用哪些步骤来使其更安全?

<?php
foreach ($_POST as $field=>$value)
{
$formcontent .= "$field: $value\n";
}
$formcontent .= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];


$recipient = "****.***y@***********.co.uk";
$subject = "Event feedback form";
$mailheader = "From: web.form@**********.co.uk\r\n";
$mailheader .= "Reply-To: $email\r\n";
$mailheader .= "MIME-Version: 1.0\r\n";


mail($recipient, $subject, $formcontent, $mailheader) or die("Failure!");
header("location:http://www.**********.co.uk");
?>
4

3 回答 3

2

在此处查看推荐的答案:此 mail() 函数是否可以防止标头注入?. 由于您没有存储在数据库中或使用附件,因此您的风险在于邮件标题中可能出现新行。如果您按照那里的说明进行操作,则可以过滤掉新行,就可以了。

希望有帮助!干杯

于 2012-08-23T09:25:06.630 回答
1

您可能希望将htmlentities应用于 $value 以防止跨站点脚本。

$formcontent .= "$field: " . htmlentites($value) . "\n";

否则,没关系,因为您的值不会进入数据库。

于 2012-08-23T09:23:59.970 回答
1

使用htmlspecialchars清理变量!

于 2012-08-23T09:24:48.373 回答