是否应使用使用DNS / MX记录的电子邮件验证?

时间:2009-07-10 21:47:23

标签: php email forms validation

我注意到大多数用于电子邮件验证的脚本都不使用DNS信息来确保给定的域实际存在。

为什么不使用DNS检查的原因是什么?

它是否真的减少了假电子邮件的数量或使表格更有用?

示例摘录:

$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;

3 个答案:

答案 0 :(得分:6)

大多数网站,尤其是保留登录信息的网站,会在您注册后发送确认电子邮件。这不仅确认电子邮件地址有效,还确认电子邮件地址属于提交者。进行DNS查找将是多余的,除非您想要向用户提示他们拼错了他们的电子邮件地址。

如果我想输入一个虚假的电子邮件地址,aaa @ aaa.com(AAA,汽车俱乐部)和somebody@example.com(来自RFC 2606)都会通过。我认为DNS查找不会像您想象的那样捕获尽可能多的虚假地址。

答案 1 :(得分:3)

这样做可能会很慢。如果您在表单中进行DNS验证,最好以某种方式使用AJAX在提交表单之前开始验证。

除此之外,您的检查在使用文字IP地址的地址上会失败,但我个人不希望接受我网页上的那些。我不在乎他们是否符合RFC822;)

答案 2 :(得分:2)

它使你的邮件服务器上的DOS攻击很容易实现。