使用php mail()发送邮件--滥用“发件人”电子邮件地址

使用php mail()发送邮件--滥用“发件人”电子邮件地址,php,forms,security,email,Php,Forms,Security,Email,我正在使用邮件函数在php中实现一个联系人表单。在联系人表单中,我要求提供用户的电子邮件地址,并在提交后将他们的邮件发送到我自己的电子邮件地址 以下是我的php代码: $to = 'myemail@gmail.com'; $from_name = $_POST['InputName']; $from_email = $_POST['InputEmail']; $subject = 'Message from '.$from_name; $message =

我正在使用邮件函数在php中实现一个联系人表单。在联系人表单中,我要求提供用户的电子邮件地址,并在提交后将他们的邮件发送到我自己的电子邮件地址

以下是我的php代码:

    $to = 'myemail@gmail.com';
    $from_name = $_POST['InputName'];
    $from_email = $_POST['InputEmail'];
    $subject = 'Message from '.$from_name;
    $message = $_POST['InputMessage'];
    $headers = 'From: '.$from_email."\r\n".'Reply-To: '.$from_email.
        "\r\n".'X-Mailer: PHP/'.phpversion();
    $mailsuccess = mail($to,$subject,$message,$headers);
经过测试,我意识到一个人可以伪装成其他人的有效电子邮件地址发送给我。例如,在测试期间,我使用我朋友的电子邮件给自己发送了一条消息。这不是一个安全问题吗?在我的gmail账户中,我确实收到了一条警告,这封邮件可能不是那个人发来的,但如果它不是明显的垃圾邮件,我通常会忽略这条警告


例如,如果Bobbob@gmail.com通过伪装成Chris的联系人表单发送消息chris@gmail.com,我将在电子邮件中回复Chris。克里斯认为他的电子邮件被黑客攻击了,因为他从未发送过那封电子邮件。这通常是一个问题吗?还是有办法让它更安全?

这叫做电子邮件欺骗。SMTP不是一个非常安全的协议。欺骗总是可能的。不幸的是,除非地球上的每一个电子邮件服务器都做出改变来解决这个问题,否则没有办法解决这个问题,这是不可能的


这是许多网络钓鱼和垃圾邮件的发生方式。

这一问题将发生在任何不需要登录的联系人表单上,您的代码确实存在其他问题,尽管这是整个电子邮件中一个巨大的普遍问题,但一些网络邮件客户端(如Roundcube)允许您拥有多个身份,每个身份都有自己的电子邮件地址,不管它是否真的属于你。使用DKIM和其他方法可以缓解这种情况,但通常并不完美,在您的情况下肯定不会如此;除非你使用谷歌功能添加某种登录,并从谷歌API获取他们的电子邮件,否则你将拥有站点范围的登录和可靠的电子邮件,显然,只有谷歌是愚蠢的,+需要验证电子邮件所有权的标准帐户。另一种解决方案是向他们发送电子邮件,要求他们在发送邮件之前确认自己的地址。使其更安全的方法是首先向发送电子邮件chris@gmail.com要求他点击一个链接,如果事实上是他填写了联系表,那么就忽略这个联系请求。@BaileyHerbert比我早13秒哈哈