gpt4 book ai didi

regex - 实用的用户验证(敏感性和特异性)?

转载 作者:行者123 更新时间:2023-12-04 16:31:05 26 4
gpt4 key购买 nike

当我第一次学习如何使用正则表达式时,我们被教导如何解析电话号码(显然总是 5 位数字,一个可选空格和另外 6 位数字),电子邮件地址(显然总是字母数字,然后是单个“@”,然后是字母数字,后跟一个“。”和三个字母)我们应该始终这样做来验证用户输入的数据。

当然,随着我的发展,我已经知道基本方法是多么愚蠢,但是我越看,我就越质疑这个概念,通过正则表达式对诸如电子邮件地址之类的东西进行最开放、仔细的正确验证最终成为数百甚至数千个字符,以便接受所有合法案例并正确拒绝非法案例。更糟糕的是,所有这些努力对实际有效性毫无用处,用户可能不小心添加了“a”,或者根本不使用该电子邮件地址,甚至正在使用其他人的地址,甚至可能使用“+” ' 被不当标记的符号。

然而与此同时,我遇到的每个网站似乎仍在进行这种技术检查,防止我在电子邮件地址或姓名中添加更多晦涩的字符,或者反对某人拥有或多或少一个标题的想法,然后是一个名字和一个姓氏,全部由拉丁字符组成,但没有任何形式的检查它是我的真实姓名。

这有什么好处吗? 一旦处理了注入(inject)攻击(应该通过对输入进行 sanitizer 以外的方法),这些检查还有其他意义吗?

或者另一方面,实际上是否有一种可靠的方式来实际验证用户详细信息,而不是以任何在上下文中有意义的方式“使用”它们并查看它是否会失败?

最佳答案

过度验证事物确实是互联网的祸根之一。特别是如果编写验证代码的人对问题域没有实际的了解。不,您可能实际上并不知道电子邮件地址的有效语法是什么。或现实世界的地址,尤其是国际地址。或电话号码。 Or people's names.

查看一些本地化示例(我的电子邮件地址)并推断涵盖域内所有可能值(所有电子邮件地址)的规则是疯狂的。除非您拥有完善的领域知识,否则您不应该提出有关该领域的规则。在电子邮件地址的情况下,这导致只有非常狭窄的可能电子邮件地址子集在日常生活中实际可用。呵呵,谢谢各位。

至于人的名字,一个人告诉你的是他们的名字,顾名思义就是他们的名字。这就是你对他们的称呼。您无法自动验证它;他们必须发送出生证明的副本以进行实际的官方验证。即便如此,这真的是你有兴趣知道的吗?还是您只需要一个“句柄”来在您的论坛页面上问候和识别他们?

Facebook 确实(做过?)严格的姓名验证,以迫使人们使用他们的真实姓名进行注册。好吧,我在 Facebook 上认识的许多人仍然使用一些胡说八道的名字。过滤器显然不起作用。话虽如此,也许它对 Facebook 来说已经足够好了,以至于大多数人都使用他们的真实姓名,因为他们不会费心去弄清楚哪种特定模式会通过验证。从这个意义上说,这样的过滤器可以达到某种目的。

最后由您决定验证的原因和。具体限制 你想强制执行。问题是人们在编写验证代码之前通常不会考虑大局,他们有 没有充分的理由为他们的具体限制。不要掉进那个陷阱。

关于regex - 实用的用户验证(敏感性和特异性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944671/

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