JavaScript验证不好吗?

时间:2009-12-22 08:46:39

标签: javascript

自从我们使用JavaScript验证表单以来已经有很长时间了。我相信大多数其他开发人员都必须如此。

问题:

如果用户(或可能是坏人)禁用JavaScript会怎样?

你迷路了!

  • JavaScript验证值得吗?
  • 我们现在应该使用它吗?
  • 对此有什么解决方案吗?

如果我错了,请纠正我。

15 个答案:

答案 0 :(得分:163)

  

JavaScript验证值得吗?

是的,因为它可以提供更好的用户体验并保留带宽。

  

我们现在应该使用它吗?

是的,出于上述原因。

  

这有什么解决方案吗?

是的,也使用服务器端验证。

答案 1 :(得分:28)

  

如果用户(或可能是坏人)禁用了javascript,该怎么办?

如前所述:根本不要依赖客户。永远不要这样做。再次检查服务器上的所有内容。

  

我们现在应该使用它吗?

是的 - 所以用户立刻就会发现错误。否则他必须先回发数据,这可能需要一段时间。顺便说一下,您减少了服务器的流量。

它更具直观性。

//编辑: BTW:据我所知,ASP.NET ValidationRules包含客户端和服务器验证。

答案 2 :(得分:17)

Javascript验证很好,因为它提供了更好的用户体验。

但是 从不 依赖它,并且应该在服务器上进行验证。

答案 3 :(得分:10)

如果您希望节省时间,请仅使用服务器端。如果您想获得更好的性能和用户体验,请在以后添加客户端验证。由于您声明的原因,永远不要依赖客户端验证。所有关键验证都应该在服务器上进行......即使在客户端上重复也是如此。

答案 4 :(得分:10)

JavaScript改进了您的产品或服务的用户interaction。用户交互(用户输入和机器响应,反之亦然)是我们应用程序的重要特征。正如我们所经历的那样,产品比以往任何时候都更具互动性。此interaction部分可以(仅)使用JavaScript(ActionScriptFlash Player)制作。我们都同意这一点 - 总是有一个计算的工作量可以转移到客户端(机器)以避免调用而不用打扰它们发送到服务器。有许多应用程序严重依赖于客户端脚本脚本。如果他们发现您不允许使用必需的脚本,则会要求它在noscript标记中留言。但是我想每个人都想启用它,因为我们都会用Gmail,Facebook等方式启动一个标签。

然而,这仍然不应该被忽视,因为我们渴望抓住每一个机会(观众/客户)并且与之合作至少比分崩离析更好。它仍然有效!

作为Microsoft开发平台用户,.NET平台上有一个方便的解决方案。这不需要在这些问题上双重努力。使用Page.Validate()Page.IsValid,在scripting is disabled时使用客户端验证。

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack) {
        Page.Validate(); // If you missed, then you got the second chance ...
    }
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (Page.IsValid) { // Confirm you do a proper validation before moving to perform any process
        Response.Write("Done!");
    }
}

我希望这会有所帮助。

答案 5 :(得分:6)

使用JavaScript没有错。我们很久以来一直在使用它。它用于应用客户端验证。

但是,我们应该实施服务器端验证,以便坏人无法破解应用程序。

答案 6 :(得分:6)

客户端(Javascript)验证是关于可用性,没有别的。如果实施的成本不值得认为可用性增加,那么就不要花时间在它上面。这些天很容易做到!

但是,我认为你不能没有服务器端验证,因为这是唯一能为你提供安全保障的东西。

答案 7 :(得分:5)

如果你只从这个主题中学到一件事,就这样吧:

从不 - 在任何情况下 - 信任来自浏览器的数据并始终在服务器端验证请求数据。

  

我们现在应该使用它吗?

是的,当然。您不需要验证服务器端的空字段。这不是验证电子邮件的可用性(电子邮件的唯一性)。如果你打算拒绝那个空场,那就没有必要把它发送到服务器和制作 服务器为它做额外的工作。

答案 8 :(得分:5)

你必须在服务器端验证它,javascript可以验证表单,但是人们可以禁用javascript,或使用其他javascript来破解它,因此必须在服务器端进行验证。

答案 9 :(得分:4)

JavaScript对客户端验证很有用。但你不能只依赖它们。您必须对发布的数据使用服务器端验证。 JavaScript只是防止不必要的帖子发送到服务器。

答案 10 :(得分:4)

通过使用支持两者的框架,您可以使服务器和客户端验证变得非常轻松。在过去,对于ASP.NET,我使用了Peter Blum验证器:

http://peterblum.com/

通过此操作,您将验证控件放到页面上,将它们连接到输入(文本框,下拉列表等),并指定验证属性(最小长度,必需,错误消息等)。页面运行时,框架会为客户端(JavaScript)和服务器(ASP.NET)分配相同的代码以执行验证。

如果没有这样的框架,正如其他海报所指出的那样,验证可能很费力。

我有兴趣知道PHP或其他技术的类似内容。

答案 11 :(得分:4)

您应该有多层验证。

在客户端进行验证

这绝对有用,因为验证可以在不必去服务器的情况下完成。一旦验证,请求就会到达服务器 - 节省一些流量。

服务器端验证

如果禁用了javascript,那么服务器还应该包含一定程度的保护 - 验证以禁止错误请求。

答案 12 :(得分:3)

在多层/面向服务的环境中,验证应存在于多个级别,以便在保持安全应用程序的同时实现更好的重用。客户端的验证,无论是在桌面应用程序还是网站/应用程序中,都应该有更好的用户体验,以防止每次回发到服务器进行验证,从而花费更多的带宽和用户时间。如果客户端验证无法完全移至前端,则考虑使用ajax进行部分回发到服务器端验证例程,同时保留更好的客户体验,但允许程序员集中维护验证规则。

在客户端,但更重要的是之后,服务器端代码应该在通过数据层持久保存数据或将其传递到另一个服务器端方法/服务之前验证数据,以使用业务规则数据并帮助防止数据完整性错误。最后,持久层本身(数据库或其他存储机制的直接接口)应该再次验证存储的数据,以防止数据完整性和可能的​​其他业务规则出错。你想要的最后一件事是一个包含无用数据的数据存储。

使用此方法可以保证数据的安全性和完整性。在您自己的站点(或通过Web服务,桌面应用程序或移动应用程序)重用您的持久层,您的数据层或您的前端表示,如果设计得当,这些验证例程已经到位并且可以被重新雇用。如果您在团队中工作,这对您,您的同事和您的管理层来说应该是非常有益的。

答案 13 :(得分:0)

Is JavaScript validation worth of it?

嗯,是的。使用JavaScript验证,您可以轻松获取有关客户端网站的任何类型的信息,而不是JavaScript验证提供更好的用户体验

   Should we ever use it now?

是的,你可以因为用户可以看到错误或他们在实时做错了什么

Are there any solutions to this?

是的,你也可以使用服务器端验证。但有时需要花费更多时间。它也是不安全的

答案 14 :(得分:0)

Javascript 是一种客户端脚本语言。因此,我们可以通过使用它来使用客户端验证。 它有助于减少服务器端的负载。这就是为什么 js 验证是值得的。这就是将其用于客户端验证的原因。但我们不应该只依赖于 js 验证。因为客户端可以随时关闭js引擎。如果是这样,就会造成很大的问题。