【问题标题】:PHP IMAP "FROM" authenticityPHP IMAP "FROM" 真实性
【发布时间】:2014-12-13 19:36:11
【问题描述】:

我有一个 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
}

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

知道什么是检查真伪的最佳方法吗?

【问题讨论】:

    标签: php gmail-imap


    【解决方案1】:

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

    您可以将其视为类似于主题的字段。
    我的意思是任何有正确知识的人都可以在那里放任何东西。

    另一方面,Gmail 作为一般规则具有非常好的垃圾邮件过滤器,因此这种情况不应该经常发生。

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

    【讨论】:

    • 不幸的是,这并没有真正的帮助 - 必须有一个好方法来检查来自邮件在标题中的真实性
    【解决方案2】:

    我知道,这个问题已经有好几年了,但我在谷歌搜索上偶然发现了这个问题,我希望我能帮助其他人找到那个页面。

    TL;DR

    • From-header 几乎可以由发件人为所有文本设置。
    • SPFDKIM 可用于验证电子邮件是否确实来自指定的发件人。
    • SPF 和 DKIM 仅在发件人管理员配置后才有效。

    正如线程创建者和 Antoan Milkov 已经提到的,发件人通常可以使用From-header 中的几乎每个电子邮件地址或文本。

    防晒系数

    验证发件人IP地址是否允许以From-sender 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

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2021-02-03
      • 1970-01-01
      • 2010-12-30
      • 2012-08-11
      • 2016-09-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      相关资源
      最近更新 更多