【问题标题】:May I safely treat email addresses lower case?我可以安全地处理电子邮件地址小写吗?
【发布时间】:2010-12-02 23:14:31
【问题描述】:

理论上电子邮件是case sensitive。但是使用电子邮件作为系统登录我希望它们都是小写的(即 john@smith.com 和 John@smith.com 不能是不同的用户)。

对于某些在其电子邮件地址中使用区分大小写的用户来说,这可能是个问题吗? 有人在外面用吗?

编辑:因为有很多“保存时保留大小写,登录时忽略”答案:如果我真的有两个不同的用户 john@smith 和 John@smith,这个系统会崩溃,不是吗?

示例:john@smith 和 John@smith 的密码为 123。我如何知道哪一个刚刚通过了身份验证?

【问题讨论】:

  • 我打赌 有人 使用它。但这是他们的问题
  • @SilentGhost:我不能说我同意你的看法——这是我们作为开发人员的问题,而且很简单;)
  • 关于您提到的“john”示例并考虑答案,您可能应该在注册新帐户期间使用不区分大小写的比较来检查电子邮件,如果匹配,您不应该允许新帐户

标签: case-sensitive case-insensitive email-address


【解决方案1】:

根据RFC 2821

邮箱的本地部分必须区分大小写。因此,SMTP 实现必须注意保留邮箱本地部分的大小写。邮箱域不区分大小写。特别是,对于某些主机,用户“smith”与用户“Smith”不同。但是,利用邮箱本地部分的大小写敏感性会阻碍互操作性,因此不鼓励使用。

因此,虽然您可以处理区分大小写的电子邮件地址,但不鼓励您这样做。

【讨论】:

  • 我读了那段(在我的问题中链接到它),但这是肯定的还是否定的?这在实际系统中的适用性如何?
  • 对于大多数“安全”值来说,是的。您不太可能遇到问题,如果遇到问题,解决方法(使用不同的地址)比强制大小写导致的用户体验问题更容易。
【解决方案2】:

不要丢弃数据。 将电子邮件地址或用户名完全按照您收到的方式存储,但要修剪字符串的两端。

发送电子邮件时,使用用户提供的大小写。仅仅因为区分大小写很少见,没有理由不处理它 - 否则该用户不会收到邮件,甚至可能无法注册。

验证用户身份时,您可以选择对小写(或大写)字符串进行比较,以便忽略大小写。

因此,通过保留用户输入数据,您突然为自己提供了选择:是否在身份验证时进行区分大小写的比较,以及在发送邮件时是否使用区分大小写的电子邮件地址。即使您现在不选择利用它们,保存数据的目的是让您(或其他开发人员)在以后有这些选择。

【讨论】:

    【解决方案3】:

    恕我直言,以用户输入的方式存储和显示地址,不仅因为 RFP 说您必须尊重大小写,还因为如果用户有偏好,您应该尊重该偏好。这是他们的电子邮件地址。我不喜欢系统重新格式化我提供给他们的个人详细信息。例如,你会惊讶于有多少系统坚持称我为“Tj”——这显然是错误的——而不是“T.J”。 (+1 到 SO 以使其正确)。

    因此,如果 John Smith 注册为“John.Smith@example.com”,那么这就是 John Smith 希望查看他的电子邮件地址的方式(如果他有偏好)。我可能不会让其他人使用“john.smith@example.com”电子邮件地址注册,因为它与其他帐户的地址相同的可能性很大,但我不会对用户的地址格式或其他格式感到不满细节。最多我可能会提示他们,如果他们给了我很多全大写的喊叫,问他们是否不喜欢更……温和的东西。

    【讨论】:

      【解决方案4】:

      如果您将其用作系统登录,则无需。通常(在谈论登录时),admin 和 Admin 是同一个人...... JohnDoe 和 johndoe 也是如此......而且,使用允许区分大小写的电子邮件提供商的人数太少了。

      【讨论】:

        【解决方案5】:

        有些系统区分大小写。

        我建议保留它,但忽略 la windows 文件系统。

        即记住 john 是通过 John@smith.com 注册的,但让他以 JOHN@smith.com、john@smith.com 或 JohN@smith.com 的身份登录。

        这不太可能引起冲突,如果有人有区分大小写的电子邮件,我相信他们会知道的。

        【讨论】:

        • 请看我的编辑。我认为这只有在我保留案例但禁止任何具有相同字母但不同案例的新注册时才有效,这与整个区分大小写的事情相矛盾,不是吗?
        • 这正是我的建议
        • 我知道这个帖子有点老了,但我有一个想法可能会有所帮助。您始终可以同时存储保留记录和小写记录。支票使用小写记录,电子邮件使用保留记录。
        【解决方案6】:

        我不知道有什么实现可以区分具有相同字母但大小写不同的电子邮件地址。

        我从未听说过仅仅因为案例错误而无法正确传输消息。

        【讨论】:

          【解决方案7】:

          This link 表示“几乎没有任何电子邮件服务或 ISP 强制要求区分大小写的电子邮件地址”。

          【讨论】:

          • 翻译:一些电子邮件服务/ISP 强制要求区分大小写的电子邮件地址。
          • 另一种翻译:没关系,除非有。
          【解决方案8】:

          是的,这是个问题。我刚刚在 Linux 上做了一个小测试(运行 exim),只有大小写正确的邮件才能到达邮箱...

          我认为大多数商业邮件提供商都会规范所有电子邮件地址,但通常你必须使用正确的大小写!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-01-06
            • 2020-06-20
            • 1970-01-01
            • 2012-11-05
            • 2011-10-21
            • 1970-01-01
            • 1970-01-01
            • 2017-05-17
            相关资源
            最近更新 更多