【问题标题】:Is client-side validation unnecessary?不需要客户端验证吗?
【发布时间】:2014-07-16 00:31:47
【问题描述】:

请检查this之前的问题。我经常听说

“...不要相信客户!永远不要相信客户!永远不要相信用户输入!”

我同意仅客户端验证是一个非常糟糕的主意。但如果是这样,使用客户端验证的优势是什么?有没有必要?什么时候应该使用客户端验证?

忘记一些坏人(他们试图破解),请考虑每个请求是否应该到达服务器端?我不这么认为。普通用户可以输入错误的数据,这些应该主要在客户端结束。我相信它可以提高网站的性能。

我试图在我的网站上Disable developer tools 来缓和坏人。我对我的网站同时使用客户端和服务器端验证。我相信还需要客户端验证。 对使用客户端验证有什么建议吗?

【问题讨论】:

  • 方便和用户体验很重要,避免不必要的服务器访问也减少了服务器的工作量
  • @MattCoubrough 客户端检查可以减少服务器端检查的任务吗?
  • 它可以减少服务器必须检查的次数次,(因为通常客户端验证会阻止无效的POST)但服务器仍然必须始终 验证所有可能的输入,针对少数(可能是恶意的)绕过客户端验证的情况

标签: javascript performance validation client-side-validation server-side-validation


【解决方案1】:

使用客户端验证以获得更好的用户体验。进行服务器端验证是非常必要的,因为客户端的验证很容易被篡改。

如果您没有客户端验证,那么当您的整个页面重新加载并输出“Sorry something was wrong”时,请准备好面对客户的愤怒

【讨论】:

  • :-) 是的,绝对正确!我也讨厌用单一的验证错误重新加载。你能给我解释一下Use client-side validations for only user experience吗?我还没明白你的真正意思!谢谢
  • @Cataclysm,照顾好你的用户,不要让他们讨厌你,这叫做用户体验
【解决方案2】:

我个人像你们一样使用它们。

想象一下电子邮件正则表达式:

客户端:

如果用户忘记了@ 或类似内容,您可以帮助用户了解错误

服务器端:

最好的正则表达式不能帮助你,知道电子邮件是可用的。你需要给他发一封电子邮件。

常规

使用客户端验证来帮助用户检测错误,如果您需要某些特定格式的数据,请使用服务器端验证。

【讨论】:

  • 顺便说一句,在发送电子邮件之前,我是否需要再次检查服务器端输入电子邮件地址语法的验证?
  • 在这种情况下,“您需要特定格式的它们”才能避免错误(取决于您的邮件类别)。所以是的。
  • 如果是这样,每个合法请求都可能通过客户端和服务器端检查。但我同意这确实是必要的。我会为安全付费的:)
【解决方案3】:

是的,单独的客户端验证可以减少服务器上的负载,并且可以让您的应用更快地呈现给用户。它还可以使客户端和服务器之间的接口更加简单。

但是,除非您可以在客户端和服务器端都可以执行的表单中编写验证逻辑,否则您将重复逻辑,并导致所有问题。

【讨论】:

  • 我需要在两边创建相同的验证逻辑吗?
  • @Cataclysm:这就是重点,不是吗?当然有些东西可以在服务端验证,但是所有在客户端的验证逻辑都必须在服务端重复。
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
相关资源
最近更新 更多