ASP.NET中输入验证的最佳实践?

时间:2010-07-03 19:20:26

标签: asp.net validation xval fluentvalidation

输入验证的常见做法是什么?换句话说,您是在客户端,服务器端还是双方检查输入验证?

另外,如果性能对我来说至关重要,那么客户端输入验证是否足以支持我的网站而不会带来任何安全风险?

6 个答案:

答案 0 :(得分:11)

始终至少执行服务器端验证。如果您想改善用户体验,客户端验证可能会很好。它还允许您避免对服务器的不必要请求。

只有客户端验证是不够的,例如,可以通过禁用javascript轻松绕过它。

我建议您始终先添加服务器端验证,一旦进行了测试,就可以启用客户端验证。

答案 1 :(得分:4)

不要依赖客户端验证!!!
这只是诚实的用户。不诚实的用户可以立即绕过它。

如果我关闭Javascript,我可以将你的应用程序搞砸了。总是把服务器端验证放在......这不是那么难

网络表单

''# VB
If Page.isValid Then
    ''# submit your data
End If

// C#
if(Page.isValid) {
    // submit your data
}

MVC

''# VB
If ModelState.IsValid Then
    ''# submit your data
End If

// C#
if(ModelState.IsValid) {
    // submit your data
}

一旦您的服务器端验证正常运行,请继续并添加客户端验证。它将为用户带来更好的体验

答案 2 :(得分:4)

我建议的一件事是使用FluentValidationxVal JQuery 一起执行基于相同规则的客户端和服务器端验证

FluentValidation是一个基于规则的框架,用于验证服务器端的.net对象。它附带了xVal的规则提供程序,这是另一个框架,允许您链接您选择的服务器端和客户端验证框架。它支持在客户端生成JQuery验证器

答案 3 :(得分:2)

一般在双方。客户端可以很容易地被故意或无意地绕过(具有noscript的普遍性)但是出于可用性原因值得拥有。

是否存在安全风险。您使用的是什么用户输入以及验证的当前性质是什么?

如果只是检查某人是否填写了表单中的必填字段,则可能不太可能存在安全风险。

答案 4 :(得分:1)

要求至少使用服务器端验证,因为可以很容易地绕过clie端验证。

如果您想拥有更好的用户体验,请使用客户端验证。 这也提高了性能,因为它减少了对服务器的HTTP请求数,因为无效的表单不会发送到服务器。

答案 5 :(得分:1)

最常见的是使用客户端和服务器端验证。

  

只有客户端输入验证对我的网站来说是否足够,而不存在任何安全风险?

不,您也应该使用服务器端验证。使用(例如)firebug删除客户端验证非常简单。显然,在删除客户端验证后,evildoer可以将任何数据发送到服务器。因此,也非常需要服务器端验证。