对发件人电子邮件地址进行硬编码是否可以避免昨天宣布的 PHPMailer 漏洞?

Does hard-coding the from email address avoid the PHPMailer vulnerability that was announced yesterday?

我所指的公告发布于: http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html

我在很多网站都用过这样的代码:

$mail = new PHPMailer(true);
$mail->SetFrom('info@mysite.com', 'My Site');
$mail->AddReplyTo( $contact_email, "$contact_name" );
$mail->Subject = $subject;
$mail->AltBody = $mail_text;
$mail->MsgHTML($mail_html);
$result = $mail->Send();

因为我的发件人地址是硬编码的,所以我不会受到该漏洞的影响吗?我应该担心来自用户输入的回复地址吗?我使用 filter_var 验证它,但如果我理解正确,发件人地址可以通过验证并仍然注入代码,因为在技术上允许在电子邮件地址中使用空格。

是的,你很安全。

正如 Sammitch 所说,您永远不应该使用用户提供的发件人地址,因为它是伪造的,并且您将无法通过 SPF 检查。这在 PHPMailer 文档和关于 SO 的许多答案中都有提及。