gpt4 book ai didi

regex - 使用正则表达式验证电子邮件地址会造成伤害吗?

转载 作者:行者123 更新时间:2023-12-01 15:32:40 25 4
gpt4 key购买 nike

我听说用正则表达式验证电子邮件地址是一件坏事,而且它实际上会造成伤害。这是为什么?我认为验证数据永远不会是一件坏事。也许没有必要,但只要您正确执行验证,这绝对不是坏事。你能解释一下为什么这是对的还是错的?如果可能造成伤害,请举例说明。

最佳答案

一般来说,是的 - 使用正则表达式来验证电子邮件地址是有害的。这是因为正则表达式作者的错误(不正确)假设。

正如@klutt 指出的,电子邮件地址有两部分,local-partdomain .值得注意的是,关于这些部分的一些不是很明显的事情:

  • local-part可以包含转义字符甚至附加 @人物。
  • local-part可以区分大小写,但是取决于该特定域的邮件服务器如何区分大小写。
  • domain部分可以包含零个或多个由句点 ( . ) 分隔的标签,但实际上没有对应于根(零标签)或 gTLD(一个标签)本身的 MX 记录。

  • 因此,您可以在不拒绝与上述对应的有效电子邮件地址的情况下进行一些检查:
  • 地址至少包含一个 @
  • local-part (最右边 @ 左侧的所有内容)非空
  • domain部分(最右边 @ 右侧的所有内容)至少包含一个句点(同样,这不是严格正确的,而是务实的)

  • 就是这样。正如其他人指出的那样,最好的做法是测试该地址的可传递性。这将确定两件重要的事情:
  • 邮箱当前是否存在;和
  • 用户有权访问电子邮件地址(是合法用户或所有者)

  • 如果您将电子邮件激活流程构建到您的业务流程中,您就无需担心出现问题的复杂正则表达式。

    一些进一步阅读以供引用:

    RFC 5321: Simple Mail Transfer Protocol

    OWASP: Input Validation Cheat Sheet

    关于regex - 使用正则表达式验证电子邮件地址会造成伤害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055431/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com