【发布时间】:2018-07-01 20:34:21
【问题描述】:
我有以下php代码
<?php
$from = $_POST['email'];
$to = "myaddr@myserver.com";
$subject = "new message";
$message = "new message from ". $_POST['email'] ." >>> " . $_POST['message'];
$headers = "From:" . $from;
mail($to,$subject,$message, $headers);
?>
我刚启动php,所以这是复制的结果。我怀疑这很容易受到攻击,因为可能只是在电子邮件地址字段中插入一个换行符并为我重写我的整个邮件标题。
我如何正确地逃避这种情况? 当您这样做时 - 您是否发现任何其他错误/漏洞?
【问题讨论】:
-
一种可能是查看 Swiftmailer 之类的库并从源代码中学习。我 认为 PHP 确实可以防止标头注入,但我 认为 您需要将
$headers指定为数组才能使其工作。不过不确定! -
这不能回答您的问题,但是许多垃圾邮件过滤器会过滤掉带有“发件人”的电子邮件,而实际上不允许来自发送电子邮件的服务器。因此,您可能应该将其设置为“something@myserver.com”并改为设置“Reply-To:”。