10

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

此外,如果性能对我来说很重要,那么对于我的网站来说,客户端输入验证是否就足够了,而不会带来任何安全风险?

4

6 回答 6

11

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

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

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

于 2010-07-03T19:22:05.890 回答
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
}

服务器端验证正常运行后,请继续添加客户端验证。它将为用户提供更好的体验

于 2010-07-03T19:36:01.490 回答
4

我会推荐的一件事是使用FluentValidationxValJQuery一起根据相同的规则执行客户端和服务器端验证。

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

于 2010-07-03T22:11:08.540 回答
2

一般在两边。客户端可以很容易地被有意或无意地绕过(随着 noscript 的流行),但出于可用性原因值得拥有。

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

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

于 2010-07-03T19:23:05.657 回答
1

至少需要使用服务器端验证,因为很容易绕过客户端验证。

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

于 2010-07-03T19:33:33.453 回答
1

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

对于我的网站来说,只有客户端输入验证就足够了,而且不会带来任何安全风险吗?

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

于 2010-07-03T19:38:55.803 回答