我应该在名字和姓氏中加上下划线吗?

Cha*_*tes 5 sql-injection whitelist jquery-validate

我们有一个包含名字和姓氏字段的表单.我被要求允许下划线.我不知道任何使用下划线的sql注入,但我也不知道有人在他们的名字中有下划线.是否有充分的理由允许或不允许名称中的下划线?

编辑:我正在使用参数和服务器端验证.这是通过jQuery验证插件进行客户端验证.

编辑2:我不是故意要讨论我是否应该进行任何验证......我只是想知道是否有任何令人信服的理由接受下划线,比如我应该接受爱尔兰人或连字符.基于此,我接受了奥伦的回答.

Ore*_*iya 14

在你允许的名字中,你应该尽可能自由.没有充分的理由不允许使用下划线,那么为什么呢?有许多恐怖故事的人试图利用不允许其实际名称的软件.看看Falsehoods程序员相信姓名的假设,你不应该做.

  • 那篇博文很没用.它没有提供任何有关如何在系统中实际处理名称的建议. (2认同)
  • 不是吗?我认为它提供了相当多的建议_不使用白名单来不必要地限制应用程序中的名称输入_. (2认同)

SLa*_*aks 12

不要使用白名单来防止SQL注入!

你有遇到过O'Neill吗?

相反,使用参数.

不过,我承认白名单会比黑名单更好


回复:编辑:
你根本不应该做这样的验证.
如果您的服务器端代码可以处理它,那么名称没有任何问题--'!@--_.
如果您的服务器端代码无法处理它,它应该.

  • +1,但对初学者来说可能更明确/更明确.如果有人提出这样的问题,他们可能需要更多的指导. (2认同)
  • @Chad:你做的任何验证都会在某个时候拒绝别人的名字.这在任何个案中都可能或不重要,但你应该尽可能地自由,并知道你拒绝的内容和原因. (2认同)
  • 是否有任何理由接受0..31范围内的字符?一个人名字的换行符可能不会给数据库带来麻烦,但它们很容易在某些报告应用程序中造成严重破坏.空字节也容易在各个地方造成困难. (2认同)
  • @SLaks:我必须同意supercat:虽然regexp验证不能解决SQL注入问题,但它是业务逻辑中非常合理的一部分.我绝对肯定我的客户都没有0-31范围内的字符名称,因此可以拒绝或过滤这些字符. (2认同)