我认为客户端验证的唯一优点是可以防止页面被重新加载。
假设我有一个ajax函数来向php文件发送请求。服务器执行验证,如果发现一些错误,则将其返回给客户端。接收错误消息的ajax会将它们输出到浏览器。
我读过一些人在ajax提交之前也会执行客户端验证。如果我可以在不重新加载的情况下从服务器返回数据,为什么这是必要的?ajax还不够吗?
Ajax就足够了,但假设您有一个包含大量内容的大型表单,它将发布这些内容,如果出现问题,在服务器提供您的请求和验证后,它将无法提交。我认为这是对服务器资源的浪费。因此,在这种情况下,最好添加一些客户端验证。
在客户端验证中,您可以通过在浏览器级别快速响应来提供更好的用户体验。执行客户端验证时,所有用户输入都在用户的浏览器中进行验证。客户端验证不需要往返服务器,因此网络流量将帮助您的服务器更好地执行。这种类型的验证是在浏览器端使用JavaScript、VBScript或HTML5属性等脚本语言进行的。
例如,如果用户输入了无效的电子邮件格式,您可以在用户转到下一个字段之前立即显示错误消息,这样用户就可以在提交表单之前更正每个字段。
客户端验证主要依赖于JavaScript语言,因此如果用户关闭JavaScript,它可以很容易地绕过并向服务器提交危险的输入。因此,客户端验证无法保护您的应用程序免受服务器资源和数据库的恶意攻击。
由于这两种验证方法都有自己的意义,建议服务器端验证更安全!
没有必要,但它具有专业优势:
-
用户友好性:
- 用户在不重新加载的情况下立即收到警告
- 用户熟悉自己的浏览器及其通知每个字段的方式
-
其他优势:
- 没有额外的服务器页面加载
- 您可以使用:invalid css(并在服务器页面上重复使用无效验证)
- 您可以最大限度地减少服务器的无效响应代码,因为客户端可以进行的所有检查都不必重新通知(用户友好)
尽管总是像黑客一样进行服务器验证,但调整者和API用户可以绕过客户端验证。