输入验证的常见做法是什么?换句话说,您是在客户端、服务器端还是两侧检查输入验证?
此外,如果性能对我来说很重要,那么对于我的网站来说,客户端输入验证是否就足够了,而不会带来任何安全风险?
输入验证的常见做法是什么?换句话说,您是在客户端、服务器端还是两侧检查输入验证?
此外,如果性能对我来说很重要,那么对于我的网站来说,客户端输入验证是否就足够了,而不会带来任何安全风险?
始终至少执行服务器端验证。如果您想改善用户体验,客户端验证可能会很好。它还允许您避免对服务器的不必要请求。
仅客户端验证是不够的,例如可以通过禁用 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
}
服务器端验证正常运行后,请继续添加客户端验证。它将为用户提供更好的体验
我会推荐的一件事是使用FluentValidation、xVal和JQuery一起根据相同的规则执行客户端和服务器端验证。
FluentValidation是一个基于规则的框架,用于在服务器端验证 .net 对象。它带有一个用于xVal的规则提供程序,这是另一个框架,允许您链接您选择的服务器端和客户端验证框架。它支持在客户端生成 JQuery 验证器
一般在两边。客户端可以很容易地被有意或无意地绕过(随着 noscript 的流行),但出于可用性原因值得拥有。
至于它是否存在安全风险。您将用户输入用于什么目的以及验证的当前性质是什么?
如果只是检查某人是否填写了表格中的必填字段,则可能不太可能存在安全风险。
至少需要使用服务器端验证,因为很容易绕过客户端验证。
如果您想获得更好的用户体验,也请使用客户端验证。这也提高了性能,因为它减少了对服务器的 HTTP 请求数量,因为无效的表单不会被发送到服务器。
最常见的是同时使用客户端和服务器端验证。
对于我的网站来说,只有客户端输入验证就足够了,而且不会带来任何安全风险吗?
不,您也应该使用服务器端验证。使用(例如)firebug 删除客户端验证非常简单。显然,在删除客户端验证后,邪恶者可以将任何数据发送到服务器。所以服务器端验证也是非常需要的。