2012-05-05 35 views
3

我有一个冗长的表单,大量使用客户端验证(用jQuery编写)。为了防止禁用JavaScript的用户提交表单,我添加了一个隐藏字段,该字段由jQuery填充“javascript_enabled”值。如果JS在浏览器中被禁用,则该字段留空并且不会提交表单。我应该依靠客户端验证来扩展什么?

问题是 - 这是否足够,我应该感到安全,还是我必须包括每个领域的服务器端验证?

+0

http://stackoverflow.com/questions/162159/javascript-client-side-vs-server-side-validation的可能重复 – kapa

回答

8

不是。客户端验证只是为了用户的舒适,而不是保护您的服务器。

所有客户端操作都很容易让用户更改。

为了保护您的服务器,您必须添加服务器端验证。

6

到什么程度?没有。 你永远不应该依赖客户端验证。客户端验证纯粹是为了UX的目的。

真正的验证总是在服务器上完成。

0

服务器端验证是必须的,客户端验证是尽可能多地做到没有往返服务器的开销。

4

以上所有答案都是有效的,我只是想补充几点。

客户端

  • 客户端验证可以用于给瞬时反馈给用户,而不需要到服务器(低流量)的额外请求。

  • 客户端验证可以轻松绕过。 (关闭JavaScript,自定义HTTP请求,访问使用如卷曲)

服务器端

  • 无法绕开(除非你离开了一个可利用的代码)

  • 良好的服务器端验证可以防止潜在威胁,如XSS和SQL注入。 (可导致获得其他用户的数据,或者打破你的数据库)

我怎么相信这将改变

我很期待WebSocket协议的进一步发展,它更广泛地成为使用.. WebSockets允许双向(全双工)连接,这意味着从服务器端进行验证将非常有效,例如每次在输入字段中输入密钥。希望这种方法将取消客户端验证!

+0

我使用websockets很多,他们的表现和他们提供的舒适度。但是我对它们在简单表单验证中的使用表示怀疑:现在使用ajax,如果您使用服务器端的那种您用于websockets的技术,则验证包括往返行程足够快(小于100 ms)。我同意你的其他观点。 –

+0

我同意任何平均的Web应用程序AJAX是好的,WebSockets只会在更大的规模上显示优势,因为它们的开销较小。 – Jack

相关问题