使表单处理脚本更加安全


making form processing script more secure

我可以使用哪些步骤来提高安全性?

<?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");
?>

看看这里的推荐答案:这个mail()函数不安全吗?。由于您没有存储在数据库中或使用附件,因此您的风险在于邮件头中可能出现新行。如果你按照那里的指示,你可以过滤掉新行,你就没事了。

希望能有所帮助!干杯

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

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

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

使用htmlspecialchar来清除变量!