当我第一次学习如何使用正则表达式时,我们被教导如何解析电话号码(显然总是5位数,可选空格和另外6位数),电子邮件地址(显然总是字母数字,然后是单个'@'),然后是字母数字后跟一个'.'和三个字母),我们应该总是这样做来验证用户输入的数据.
当然,正如我已经开发出来的那样,我已经了解了基本方法有多愚蠢,但是我看的越多,我对这个概念的质疑就越多,通过正则表达式对电子邮件地址等最开放的仔细正确验证最终会成为数百甚至数千个字符长,以便接受所有合法案件并正确拒绝非法的案件.更糟糕的是,所有这些努力对于实际有效性完全没有任何作用,用户可能不小心添加了"a",或者可能根本不使用该电子邮件地址,甚至使用其他人的地址,或者甚至可能使用'+' '被不正当地标记的符号.
然而,与此同时,我遇到的每个网站仍然会进行这种技术检查,阻止我在电子邮件地址或名称中添加更多不起眼的字符,或者反对某人拥有多于或少于一个标题的想法,然后是一个名字和一个姓氏,都是纯粹用拉丁字符制作的,但没有任何形式的检查,这是我的真名.
这有益处吗?一旦处理了注入攻击(应该通过对输入进行消毒以外的其他方法),还有其他指向这些检查吗?
或者另一方面,实际上是否有一种确定的方法可以实际验证用户详细信息,而不是以任何方式在上下文中"使用"它们并查看它是否会崩溃?