不允许使用加号登录电子邮件地址的安全原因是什么?

信息安全 电子邮件
2021-08-14 00:57:10

在我评论电子邮件地址中的禁止符号后,我的问题是基于这条推文。+这条推文说,“这是我们出于安全原因采取的措施。”

对于在电子邮件地址中有(或使用)加号的人来说,这可能会令人沮丧和不便,而且我确信网站不打算这样做。我不知道与使用该+角色相关的安全漏洞;这是我应该改变的东西以提高我自己的安全吗?网站不允许在电子邮件字段中使用该字符的安全原因是什么?

更新: Meetup Support 积极响应。事实证明,这更像是一个用户体验问题,而不是一个安全问题。他们在这条推文中澄清说,他们不允许+阻止垃圾邮件(?),并且他们承认了改善用户体验的建议。(我在这里的目的不是抱怨 Meetup;让我们保持温和!我想确保我自己的接收电子邮件地址的网站中没有遗漏一些重要的东西。)

4个回答

在您的电子邮件地址中包含“+”本身并没有安全漏洞。根据RFC 2822是允许的,并且对于 SQL 或其他常见的注入形式不是特别有用。

但是,许多系统(我们称 Meetup 为为此目的的系统)通过白名单而不是黑名单来强制执行安全性。有人定义了他们希望在电子邮件地址中看到的有限字符列表(可能是大写、小写、数字、.、_ 和 -),并编写了一个过滤器来阻止该列表之外的任何内容。他们认为没有人会使用 +,所以你不走运。

本文介绍如何设置 Postfix 来标记,并使用“-”而不是“+”,因为:

然而,在最近关于 Postfix 用户列表的讨论中,有人提到一些网站(尤其是银行)在将电子邮件地址输入在线表格时使用 JavaScript 来尝试验证电子邮件地址,并且许多网站不允许将加号作为电子邮件地址中的有效字符。

十多年前,出于类似的原因,我从“+”切换到“-”。

他们可能不称职,甚至可能不知道他们在骗你。

从输入验证的角度来看,他们没有立足之地。有一组特定的 RFC 有力地描述了有效电子邮件地址的格式即使根据 RFC,电子邮件地址在技术上是无效的,但仍然可以向其发送邮件。您可以通过向其发送带有唯一链接供所有者单击的邮件来检查电子邮件地址是否可交付。

正如链接网站所说:

遗憾的是,许多网站不允许您注册带有加号的地址。不是因为他们试图打败你的跟踪策略,而是因为他们是垃圾。他们从一个狡猾的网站复制了一个损坏的正则表达式,并使用它来验证电子邮件地址。并因此失去客户。

即使我们假设他们已经完全破坏了代码并且他们正在使用垃圾验证器,因为他们实际上将经过验证的电子邮件地址粘贴到 UNIX shell 中,这仍然joe.bloggs+meetup.com.better.not.sell.this.to.spammers@example.com没有给出应该被视为无效的正当理由。

没有有效的安全理由禁止使用+电子邮件地址。即使垃圾邮件发送者将其用作创建多个帐户的低租金方式,网站也可以轻松查看是否有人同时注册了joe.bloggs+1@example.comjoe.bloggs+2@example.com; 如果 Joe Bloggs 滥用他们的服务,他们可以轻松禁止这两个帐户。任何拥有自己的邮件服务器的人都可以生成有效的电子邮件地址,例如joe.bloggs1@example.com, joe.bloggs2@example.com通过禁止使用+.

正如其他人所指出的那样,没有真正的安全理由来禁止使用加号登录电子邮件地址。

作为一名网络开发人员,我能想到的主要原因是防止用户使用不同的别名进行多次注册,尤其是在一个电子商务网站上,你有一个一次性的免费优惠,而且你想限制为每个人。

从数据库管理员的角度来看,如果您想接受加号并同时将电子邮件注册限制为每个电子邮件地址一个别名,则必须对数据库进行额外查询。否则UNIQUE,在电子邮件地址上设置密钥就足以防止INSERT电子邮件地址重复。

上述原因是技术和商业决策的结合,这不是一句话就能轻易解释的。如果您在电子邮件地址中使用别名,一个简单的解决方案是删除该部分以进行注册。

我能想到的唯一安全原因是他们使用正则表达式来处理电子邮件,而且他们的软件很垃圾,没有正确转义地址并且他们遇到错误。也许一个很远的猜测,但我已经看到与电子邮件地址+和正则表达式相关的问题。无论如何,结论是这些网站都是垃圾。