使表单处理脚本更安全

时间:2012-08-23 09:19:28

标签: php

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

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

3 个答案:

答案 0 :(得分:2)

在此处查看建议的答案:Is this mail() function safe from header injection?。由于您没有存储在数据库中或使用附件,因此您可能会在邮件标题中出现新行。如果您按照这些说明进行操作,则可以过滤掉新行,您就可以了。

希望有所帮助! 干杯

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

使用htmlspecialchars来清理变量!