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

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

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

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

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


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


当前回答

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

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

其他回答

如果您正在进行轻量级验证,最好在客户端上进行。它将节省网络流量,这将帮助您的服务器更好地运行。如果验证很复杂,需要从数据库中提取数据或密码之类的东西,那么最好在可以安全地检查数据的服务器上进行验证。

JavaScript可以在运行时修改。

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

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

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

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

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

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

您可以进行服务器端验证,并将每个字段的验证结果发送回一个JSON对象,将客户端Javascript保持在最低限度(只显示结果),并且仍然具有用户友好的体验,而无需在客户端和服务器上重复。

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