Javascript 我应该在多大程度上依赖客户端验证?

Javascript 我应该在多大程度上依赖客户端验证?,javascript,validation,Javascript,Validation,我有一个很长的表单,它大量使用客户端验证(用jQuery编写)。为了防止禁用JavaScript的用户提交表单,我包含了一个隐藏字段,该字段由jQuery使用“JavaScript_enabled”值填充。如果浏览器中禁用了JS,则该字段将保留为空,并且不会提交表单 问题是-这是否足够,我应该感到安全,还是我也必须为每个字段包含服务器端验证?否。客户端验证只是为了用户的舒适,而不是为了保护您的服务器 用户可以轻松更改所有客户端操作 为了保护您的服务器,您必须添加服务器端验证。到什么程度?没有您根

我有一个很长的表单,它大量使用客户端验证(用jQuery编写)。为了防止禁用JavaScript的用户提交表单,我包含了一个隐藏字段,该字段由jQuery使用“JavaScript_enabled”值填充。如果浏览器中禁用了JS,则该字段将保留为空,并且不会提交表单


问题是-这是否足够,我应该感到安全,还是我也必须为每个字段包含服务器端验证?

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

用户可以轻松更改所有客户端操作


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

到什么程度?没有您根本不应该依赖客户端验证。客户端验证仅用于用户体验目的


真正的验证总是在服务器上进行。

服务器端验证是必须的,客户端验证要尽可能多地进行,而不需要往返服务器的开销。

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

客户端
  • 客户端验证可用于向用户提供即时反馈,而无需向服务器发出额外请求(较低的通信量)

  • 客户端验证可以轻松绕过。(禁用JavaScript、自定义HTTP请求、使用例如CURL的访问)

服务器端
  • 无法绕过(除非您留下了一段可利用的代码)

  • 良好的服务器端验证可以防止诸如XSS和SQL注入之类的潜在威胁。(可能导致获取其他用户数据,或破坏您的数据库)

我怎么相信这会改变
我期待着WebSocket协议的进一步发展和更广泛的应用。。WebSocket允许双向(全双工)连接,这意味着从服务器端进行验证将非常有效,例如每次在输入字段中输入密钥时。希望这种方法能够消除客户端验证

我经常使用WebSocket,因为它们的性能和提供的舒适性。但我对它们在简单表单验证中的用途表示怀疑:在今天的ajax中,如果您使用服务器端技术(WebSocket所使用的技术),那么包含往返的验证足够快(不到100毫秒)。我同意你的其他观点。我同意任何一个普通的web应用程序AJAX都很好,WebSocket只会在更大的范围内显示出优势,因为它们的开销更小。