PHP IMAP“FROM”真实性

时间:2014-10-18 09:29:58

标签: php gmail-imap

我有一个PHP脚本,定期检查来自Google应用电子邮件的电子邮件,然后查看该电子邮件的来源,并将该电子邮件分配到我们平台上的帐户:

$inbox = imap_open(gHost,gUser,gPass) or die('Cannot connect to Gmail: ' . imap_last_error());

$criteria ="ALL"; 
$emails = imap_search($inbox, $criteria);

foreach($emails as $email_number) { //loop all emails
$header = imap_headerinfo($inbox, $email_number);
$from = $header->from[0]->mailbox . "@" . $header->from[0]->host;
//sql script here to check against users table and allocate the email
}

问题是任何人都可以写一个脚本来向我们的平台发送一个错误的“来自”的电子邮件,如果电子邮件是我们平台上的用户,它会将电子邮件分配给该用户,这会打开一个安全漏洞。我们已经对此进行了测试,成功通过了电子邮件。我们如何检查来自该用户的用户是否实际上已经发送过 - 可能是使用DKIM,spf等进行评分。

知道检查真实性的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

From电子邮件字段的内容是可配置的。

你可以把它想象成一个类似于主题的字段 我的意思是任何有正确知识的人都可以在那里放任何东西。

另一方面,Gmail作为一般规则有非常好的垃圾邮件过滤器,所以这不应该经常发生。

如果这种情况经常发生并且是个问题,那么您应该实施一些额外的过滤 例如,使用滥用最多的电子邮件创建数据库并进行一些额外处理。

答案 1 :(得分:0)

我知道,这个问题已有好几年了,但是我不小心在Google搜索中发现了这个问题,希望我能帮助其他人找到该页面。

TL; DR

  • 发件人几乎可以为每个文本设置From标题。
  • SPF DKIM 可用于验证电子邮件确实来自指定的发件人。
  • SPF和DKIM仅在发件人管理员配置了它们后才能起作用。

正如线程创建者和Antoan Milkov所述,发件人通常可以使用From标题中的几乎每个电子邮件地址或文本。

SPF

要验证是否允许发件人ip地址以From-发件人SPF的名义发送邮件,可以使用。但是,大多数情况下,默认情况下未配置SPF,并且需要由域管理员设置。

更多详细信息:https://de.wikipedia.org/wiki/Sender_Policy_Framework

我还没有使用过它,但是它有助于检查PHP中的SPF:
https://github.com/Mika56/PHP-SPF-Check

DKIM

使用DKIM,电子邮件由发件人签名,收件人可以检查签名是否有效。此外,域管理员还需要配置DKIM。

更多详细信息:https://www.dmarcanalyzer.com/de/dkim-de/

这有助于通过PHP验证DKIM签名:
https://github.com/angrychimp/php-dkim