ASP.NET中输入验证的最佳实践?
-
02-10-2019 - |
题
输入验证的常见实践是什么?换句话说,您是否在客户端,服务器端或两侧检查输入验证吗?
另外,如果绩效对我至关重要,那么在没有出现任何安全风险的情况下,仅客户端输入验证就足够了吗?
解决方案
始终至少执行服务器端验证。如果您想改善用户体验,客户端验证可能会很好。它还允许您避免对服务器的不必要请求。
例如,仅通过禁用JavaScript,可以轻松绕过客户端验证。
我建议您始终从添加服务器端验证开始,一旦测试,您就可以启用客户端验证。
其他提示
不要依靠客户端验证!!!
它只是诚实的用户。不诚实的用户可以立即解决。
如果我关闭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
}
服务器端验证运行后,然后继续添加客户端验证。它将为用户提供更好的体验
通常在两边。客户端很容易被故意或无辜地绕过(noscript的流行率),但值得出于可用性原因。
关于它是否带来安全风险。您使用的用户输入是什么?验证的当前性质是什么?
如果只是检查某人是否已经以形式填写了强制性字段,那么可能会有安全风险。
需要在SERD验证验证时使用它,因为CLIE端验证很容易被绕过。
如果您想具有BTTER用户的剥夺,请使用客户端验证。这也会提高性能,因为它减少了对服务器的HTTP请求数量,因为无效的表单不会发送到服务器。
最常见的是同时使用客户端和服务器端验证。
只有客户端输入验证是否足以在我的网站上不出现任何安全风险?
不,您也应该使用服务器端验证。用(例如)firebug删除客户端验证非常简单。显然,在删除客户端验证后,evildoer可以将任何数据发送到服务器。因此,也强烈需要服务器端验证。
不隶属于 StackOverflow