从PHP安全发送电子邮件

从PHP安全发送电子邮件,php,email,Php,Email,我的网站上有一个页面,用户可以通过给我发邮件、姓名和信息给我。在前端(JS),我做了一些基本的验证,确保电子邮件的格式像电子邮件一样,确保其他框不是空的,然后通过GET将其发送到PHP 现在我意识到,人们可以通过向PHP中注入恶意代码来做一些非常鬼鬼祟祟的事情。我应该采取什么预防措施?当我使用MySQL时,我会使用mysqli escape函数对其进行转义。我应该在这里做什么 这是我现在的剧本: <?php if(!isset($_GET["message"]) || !isset

我的网站上有一个页面,用户可以通过给我发邮件、姓名和信息给我。在前端(JS),我做了一些基本的验证,确保电子邮件的格式像电子邮件一样,确保其他框不是空的,然后通过GET将其发送到PHP

现在我意识到,人们可以通过向PHP中注入恶意代码来做一些非常鬼鬼祟祟的事情。我应该采取什么预防措施?当我使用MySQL时,我会使用mysqli escape函数对其进行转义。我应该在这里做什么

这是我现在的剧本:

<?php
    if(!isset($_GET["message"]) || !isset($_GET["name"]) || !isset($_GET["email"])){
        echo "Check all the fields are correctly filled in and try again!";
        die();
    }
    $email = $_GET["email"];
    $message = $_GET["message"];
    $name = $_GET["name"];
    if($email == ""|| $message == "" || $name == ""){
        echo "Check all the fields are correctly filled in and try again!";
        die();
    }

    $message = wordwrap($message, 70);

    mail("email@email.com","A Message From " . $name,$message,"From: $email\n");
    echo "success";
?>


一种非常基本的方法是,您可以声明一个变量(例如
$pattern
)并在其中存储正则表达式(如攻击中常用的模式),然后使用
preg\u match($pattern,$valueFromYourForm)
方法,以查看传递的值是否与这些表达式中的任何一个匹配,然后您可以停止执行。

使用,它会为您处理该操作。作为一个额外的PHPMailer,如果出现故障,实际上会给您错误,'mail()'只返回true/false,您就不知所措了。对于MySQL,您应该使用PDO或Mysqli,并使用准备好的/参数化的查询绑定参数,而不是首先使用“真正的转义函数”,如果您不“必须”使用GET,则使用POST,因为GET可以在URL中更改。然后,查找XSS表单注入。我想,有时候这是您能做的最好的了。但要知道,依赖黑名单被认为是不好的安全做法。当你可以的时候,你应该总是和白名单做比较——因为利用/绕过黑名单要容易得多。