哪个最好使用验证服务器端或客户端

时间:2014-06-27 11:12:16

标签: jsp validation client-side server-side

AS在几天内我们计划启动基于Web的应用程序,任何人都可以告诉我哪个是最好的,因为我们将以各种形式和登录页面提供相同的内容。

1 个答案:

答案 0 :(得分:1)

什么是验证?

验证是一个测试过程,确保用户通过网络表单输入了所需的和格式正确的信息。

什么是客户端验证?

在客户端验证方法中,所有输入验证和错误恢复过程都在客户端进行,即在用户的浏览器上进行。它可以使用JavaScript,AJAX,HTML5等完成。

什么是服务器端验证?

在服务器端验证中,所有输入验证和错误恢复过程都在服务器端执行。它可以使用C#.NET,VB.NET等编程语言来完成。

差异和比较:

客户端验证比服务器端更快,因为验证发生在客户端(在浏览器上),并且保存了从客户端到服务器的网络时间。

另一方面,服务器端验证在Web服务器上完成。然后服务器将数据呈现到html页面并发送回客户端(浏览器)。

服务器端验证比客户端更安全,因为即使他做了一个视图源,用户也看不到代码。

客户端

您希望首先在客户端验证输入,因为您可以向普通用户提供更好的反馈。例如,如果他们输入无效的电子邮件地址并移至下一个字段,则可以立即显示错误消息。这样,用户可以在提交表单之前更正每个字段。

如果您只在服务器上进行验证,则必须提交表单,收到错误消息,然后尝试搜索问题。

(这种痛苦可以通过制作" sticky"表单,其中服务器记住每个字段中输入的内容并将其填入,但客户端验证仍然更快。)

服务器端

您希望在服务器端进行验证,因为您可以防止恶意用户,他们可以轻松绕过您的JavaScript并向服务器提交危险输入。

信任您的UI非常危险。他们不仅可以滥用您的用户界面,而且可能根本不使用您的用户界面,甚至浏览器。如果用户手动编辑URL,或运行自己的Javascript,或使用其他工具调整HTTP请求,该怎么办?如果他们从curl发送自定义HTTP请求怎么办?例如?

不允许这样做不仅从安全的角度来说是天真的,而且也是非标准的:应该允许客户端以他们希望的任何方式发送HTTP,并且您应该正确响应。这包括验证。

服务器端验证对于兼容性也很重要 - 并非所有用户都启用了JavaScript。

<强>结论:

两种验证方法都有其自身的意义。我建议你应该使用验证方法客户端验证来提供更好的用户体验和服务器端,以确保从客户端(浏览器)获得的输入实际上已经过验证,而不仅仅是应该验证由客户。