gpt4 book ai didi

validation - 在 Web 应用程序中验证 FirstName

转载 作者:行者123 更新时间:2023-11-28 23:49:19 24 4
gpt4 key购买 nike

我不想太严格,因为一个可能的名字中可能有数千个可能的字符

普通英文字母、重音字母、非英文字母、数字(??)、常用标点符号

例如

D'souza
D'Anza
M.D. Shah (dots and space)
Al-Rashid
Jatin "Tom" Shah

但是,我不想排除 HTML 标签、分号等

是否有这样的字符列表,从 Web 应用程序的角度来看绝对是坏的

然后我可以使用 RegEx 将这些字符列入黑名单

我的申请背景

它是一个基于 Java Servlet-JSP 的网络应用程序。Linux 上的 Tomcat,以 MySQL(有时是 MongoDB)作为后端

到目前为止我尝试了什么

String regex = "[^<>~@#$%;]*";
if(!fname.matches(regex))
throw new InputValidationException("Invalid FirstName")

我的问题更多的是关于设计而不是编码......我正在寻找一个详尽的(非常详尽的)字符列表,我应该将其列入黑名单

最佳答案

更好的方法是接受任何人想要输入的任何内容,然后在可能导致问题的上下文中转义任何有问题的字符。

例如,没有理由禁止人们使用 <i>在他们的名字中(尽管它不太可能是合法名称),并且它只会在您为用户生成 HTML 时造成潜在问题(XSS)。同样,不允许引号、分号等仅在其他场景(SQL 查询等)中才有意义。如果规则在不同的地方不同并且你想清理输入,那么你需要在同一个地方的所有规则(空格怎么样?你要创建包含用户名字的文件名吗?如果所以,也许你必须将其添加到黑名单中)。

假设您至少在一种情况下会出错:也许您在第一次实现时没有考虑到某些事情,因此您返回并将新项目添加到您的黑名单中。您仍然有已经使用受污染数据注册的用户。因此,您可以运行整个数据库以清理数据(这可能需要非常 非常 很长时间),或者您可以只做无论如何,您真正需要做的是:在为当前媒体呈现数据时对数据进行清理。这样,您只需在相关点管理清理(无需保护 HTML 输出免受 SQL 注入(inject)攻击)它将适用于您的所有数据,而不仅仅是实现后收集的数据你的黑名单。

关于validation - 在 Web 应用程序中验证 FirstName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10938377/

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