【发布时间】:2012-08-18 06:42:18
【问题描述】:
你好!我只是想知道我刚刚制作的这个联系人表单脚本有多安全?很久以前,当我制作联系表时,我的老师一直在唠叨我。
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$myemail = "email@adress.com";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$comments = $_POST['comments'];
if($name == 0 || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email) || !preg_match("/^\d{2}(-\d{3}){2}(\d{2})?$/", $phone) || $subject == 0 || $comments == 0){
$error_message = 'Something was written wrong..';
} else {
$message = "Hello!
Your contact form has been submitted by:
Name: $name
E-mail: $email
Phone: $phone
Comments: $comments
End of message";
mail($myemail, $subject, $message);
$error_message = 'Your message was sent!';
}
}
关于如何使其安全的任何建议?
附: Securing a Contact Form 和 Securing a php contact form 都适用于 WordPress,这不是我想要的。
【问题讨论】:
-
你可能想在codereview.stackexchange.com上发帖
-
似乎它容易受到邮件注入的影响,这意味着通过注入自定义标头和自定义正文通过您的服务器发送(垃圾邮件)邮件。可以通过去除主题中的 \r 和 \n 以及您未过滤到邮件标题中的所有其他内容来修复。
-
也许老师指的是人类/机器人检查员,例如recaptcha。
-
@DanielM 是这样的吗?
$subject = "$_POST['subject']\r\n"; -
@Nworks:不,恰恰相反:
$subject = str_replace(array("\r", "\n"), array('', ''), $subject);你应该对这个主题进行一些研究才能理解这一点。
标签: php email contact-form secure-coding