2010-07-03 55 views
9

输入验证的常用做法是什么?换句话说,您是否在客户端,服务器端或双方检查输入验证?另外,如果性能对我来说至关重要,那么客户端输入验证就足以满足我的网站而不会出现任何安全风险?ASP.NET中输入验证的最佳实践?

回答

11

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

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

我建议你总是先添加服务器端验证,一旦你测试了它,你可以启用客户端验证。

2

一般在两侧。客户端可以很容易地被有意或无意地绕过(有无脚本的流行),但出于可用性原因值得考虑。

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

如果只是检查某人填写了表格中的强制字段,那么可能不会有安全风险。

1

它需要使用最少的服务器端验证,因为clie端验证可以很容易地绕过。

如果你想有一个用户界面,请使用客户端验证。 这也提高了性能,因为它减少了到服务器的HTTP请求数量,因为无效的表单将不会发送到服务器。

4

不依赖于客户端验证!!!
这只是为了诚实的用户。不诚实的用户可以很快解决它。

如果我关闭Javascript,我可以锤你的应用程序狗屎。始终把服务器端验证中...它并不难

Web表单

''# 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 
} 

一旦你的服务器端验证是否正常工作,然后继续前进,并添加客户端验证。它将为用户带来更好的体验

1

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

只有客户端输入验证足以让我的网站没有任何安全风险吗?

不,您应该使用服务器端验证。使用(例如)萤火虫删除客户端验证非常简单。很明显,删除客户端验证后,evildoer可以将任何数据发送到服务器。因此,强烈需要服务器端验证。

4

一两件事,我会使用FluentValidationxValJQuery的一起执行基于相同的规则客户端和服务器端验证建议。

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