客户端验证和服务器端验证哪个更好?

在我们的情况下,我们使用

jQuery和MVC。 JSON数据在视图和控制器之间传递。

我所做的很多验证都是在用户输入数据时进行验证。 例如,我使用按键事件来防止文本框中出现字母,设置一个最大字符数,并在一个范围内设置一个数字。

我想更好的问题应该是,做服务器端验证比客户端验证有什么好处吗?


很棒的回答每个人。我们拥有的网站是密码保护的,用户基数小(<50)。如果他们没有运行JavaScript,我们将发送忍者。但如果我们为每个人设计一个网站,我同意对双方进行验证。


当前回答

客户端应该通过HTML5输入类型和模式属性使用基本验证,因为这些只用于渐进增强以获得更好的用户体验(即使它们不支持< IE9和safari,但我们不依赖它们)。但是主要的验证应该发生在服务器端。

其他回答

是的,总是可以完全绕过客户端验证。您需要做到这两点:客户端提供更好的用户体验,服务器端确保您得到的输入是实际验证的,而不仅仅是客户端假定的验证。

必须始终在服务器上进行验证。

在客户端上进行验证对用户来说也很好,但这是完全不安全的。

JavaScript可以在运行时修改。

我建议在服务器上创建验证结构,并与客户端共享该结构。

你需要在两端单独的验证逻辑,例如:

客户端输入的“必需”属性

字段。长度> 0服务器端。

但是使用相同的验证规范将消除两端镜像验证的一些冗余(和错误)。

我再重复一遍,因为这很重要:

始终在服务器上验证

并添加JavaScript用于用户响应。

客户端应该通过HTML5输入类型和模式属性使用基本验证,因为这些只用于渐进增强以获得更好的用户体验(即使它们不支持< IE9和safari,但我们不依赖它们)。但是主要的验证应该发生在服务器端。