我有一个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等进行评分。
你知道检查真实性最好的方法是什么吗?
发布于 2014-10-18 18:51:05
From电子邮件字段的内容可配置。
你可以把它想象成一个类似于主题的字段。
我的意思是,任何有正确知识的人都可以把任何东西放在那里。
另一方面,作为一般规则,Gmail有非常好的垃圾邮件过滤器,所以这种情况不应该经常发生。
如果这种情况发生得太频繁,并且是一个问题,那么您应该实现一些额外的过滤。
例如,创建包含最多滥用电子邮件的数据库,并进行一些额外的处理。
发布于 2020-11-28 06:56:37
我知道,这个问题已经有好几年了,但我在谷歌搜索中偶然发现了这个问题,我希望我能帮助其他人找到那个页面。
TL;DR
发件人可以使用几乎每个text.
From-header。可用于验证电子邮件是否确实来自指定的发件人。正如线程创建者和Antoan Milkov已经提到的,发送者通常可以使用From-header中的几乎每个电子邮件地址或文本。
SPF
要验证是否允许发件人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://stackoverflow.com/questions/26438228
复制相似问题