我有一个冗长的形式,大量使用客户端验证(用jQuery编写)。为了防止用户使用已禁用的JavaScript提交表单,我添加了一个隐藏字段,该字段由jQuery填充“javascript_enabled”值。如果在浏览器中禁用了JS,则该字段将留空,并且不会提交表单。
问题是 - 这足够了,我应该感到安全,还是我必须为每个字段都包含服务器端验证?
答案 0 :(得分:8)
没有。客户端验证仅用于方便用户,而不是保护您的服务器。
用户可以轻松更改所有客户端操作。
要保护您的服务器,您必须添加服务器端验证。
答案 1 :(得分:6)
到什么程度?没有。 您永远不应该依赖客户端验证。客户端验证完全用于UX目的。
真正的验证总是在服务器上完成。
答案 2 :(得分:4)
以上所有答案都有效,我只想补充几点。
客户端验证可用于向用户提供即时反馈,而无需向服务器发送额外请求(较低流量)。
可以轻松绕过客户端验证。 (禁用JavaScript,自定义HTTP请求,使用例如CURL访问)
无法绕过(除非您留下可利用的代码)
良好的服务器端验证可以防止潜在的威胁,如XSS和SQL注入。 (可能导致获取其他用户数据,或破坏您的数据库)
我期待进一步开发WebSocket协议并使其得到更广泛的使用.WebSockets允许双向(全双工)连接,这意味着从服务器端验证将非常有效例如,每次将键输入到输入字段中。希望这种方法可以取消客户端验证!
答案 3 :(得分:0)
服务器端验证是必须的,客户端验证应该尽可能多地进行,而不需要往返服务器的开销。