RFC 822、3696和其他规范指定了电子邮件地址格式以及应用程序应如何验证这些格式。不幸的是,实际上几乎没有人遵守它们,大多数开发人员倾向于即时发明正则表达式或从可疑来源复制粘贴正则表达式来验证用户的电子邮件地址。这在实践中导致许多 Web 服务需要电子邮件地址,通常作为其用户的主要身份,但只接受 RFC 实际允许的非常有限的地址子集。
那么,对于通常被认为是“网络安全”的电子邮件地址的现状,有什么可以说的吗?是否有一些共同的子集随着时间的推移而被大多数服务所接受?HTML 5 输入类型的标准是什么email
,有望最终成为电子邮件的默认快速前端有效性检查?
请注意,我不是在问应该做什么来验证电子邮件地址。理想情况下,验证应该包括轻量级的前端验证,它允许每个可能的地址和可能的一些误报,然后是后端实际电子邮件服务器的回调验证。相反,我要问的是,对于当前在野外的实现认为什么是有效的,是否有任何共识。如果我要创建一个正则表达式来验证电子邮件地址(我不是,但我很幽默),那应该是什么来大致匹配其他人所做的呢?如果我要在自己的服务器上为自己创建一个新的电子邮件地址,我应该坚持哪个安全子集才能在大多数网站上使用该地址?