我正在构建一个公开的网络应用。因此,我将尽可能详尽地验证每个字段。我的意思是,如果某人输入的内容无效,他们就会知道完全它是什么(明确了他们需要修复的内容)。
我跟随了斯科特格思里在NerdDinner eBook中的例子。我喜欢在核心类文件中进行所有验证的想法(作为部分类)。
我正在执行的验证是:
我的问题是,您在网络应用中进行的典型验证检查是什么?也许我完全忽视了某些内容。 ;)
提前致谢!
答案 0 :(得分:3)
您应该尝试尽可能多地使用现有框架进行验证。编写全面的验证库是一项艰巨而耗时的工作。这是最好留给致力于开发它的团队的事情之一,例如jQuery validation插件和类似的项目。已经有很多非常好的validator libraries可以为您节省大量的时间和精力。
您可能会发现有关Codeplex的MVC validator toolkit项目很有帮助。 CodeProject has a tutorial on it如果您想了解更多内容。您还可以查看xVal,作为提及的评论者之一。
如果您有特殊原因需要在内部编写验证,或者您不相信我上面所说的内容,那么我认为有用的是:
答案 1 :(得分:1)
您需要检查SQL injection,XSS和CSRF。您可以将这些tools用于Firefox来帮助您测试这些内容。然后还有一些事情,比如确保用户名不等于密码,登录限制等。验证你的CSS和XHTML也不错,尽管我认为这不是你的意思。
答案 2 :(得分:1)
除了别人提到的内容之外,别忘了验证彼此依赖的项目。也就是说,输入值的一致性。例如,如果用户输入最大值和最小值,则不要仅根据其合法的最大值和最小值单独检查这两个值,而是相互检查它们以确保输入的值在逻辑上一致。
对于主机名,您可能需要验证DNS是否返回IP地址。如果没有,请让用户知道,但不一定拒绝主机名。也许用户正在预先配置尚不存在的东西。这取决于具体的应用。
也就是说,除了语法有效性之外,您还可以检查输入的值是否有意义并且彼此一致。
如果你全力以赴,你可以做的另一件事是只允许在数字字段中输入数字,只允许在信用卡或电话号码字段中输入数字和“ - ”,依此类推。
始终,始终允许用户以最熟悉的格式输入输入,即使您以后必须删除无关的数据。例如,即使您稍后删除了“ - ”字符,让用户(但不要求用户)输入电话号码是1-800-555-1212。
答案 3 :(得分:0)
不确定这与asp.net-mvc有什么关系,但是......
我总是尽量避免过度验证(显然你需要做一些简单的理智,以确保没有db错误)。这是一个根据您的业务规则进行现场决策的字段。某些字段需要具有严格的验证规则,例如信用卡号。但只需要考虑验证如何为用户提供服务。很少需要正则表达式来匹配所有可能的电子邮件地址 - 当网站不允许在您的电子邮件中添加+标志时,这真的很烦人。在大多数情况下,如果您让人们按照他们想要的方式输入电话号码,您的应用就可以了。当你准备在场地上放置必要的规则时,总是先猜测自己。
我推荐使用entlib验证应用程序块来实现易于使用和扩展的框架。