保护一个接触的形式脚本(Securing a contact form script)

2019-07-31 03:12发布

你好! 我只是想知道如何安全是这个脚本联系形式我只是做? 我的老师对我唠叨很久以前,当我做了我的contactforms。

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!';

    }
}

如何使其安全有什么建议?

PS 保护一个联系表和保护一个PHP接触形式都为WordPress这不是我出什么。

Answer 1:

您可以使用一个函数来验证条目,如:

function check_input($data)
 {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
 }

   

        $name      =    check_input($_POST['name']);
        $email    =    check_input($_POST['email']);
        $phone    =    check_input($_POST['phone']);
        $subject  =    check_input($_POST['subject']);
        $comments =    check_input($_POST['comments']);

     if ($name && $email && $phone && $subject && $comments) {
         Send contact form...

}

当然,你可以添加验证码,使之更加安全。



Answer 2:

没有什么不安全的在你的代码确实缺乏数据验证的旁边。 你只需收集表单数据并发送出去。 所以唯一的“不安全感”是你将通过这种形式很容易被垃圾邮件,除非使用任何类型的Captcha验证码。 我不知道在那一刻,但有可能欺骗邮件()与精雕细琢$主题添加更多receipients,所以它会被保存,以保证它的oneliner并去掉任何CRLFs



文章来源: Securing a contact form script