JavaScriptvalidation不好?

自从我们使用JavaScriptvalidation我们的表单已经很长时间了。 我相信大多数其他开发者的情况肯定是这样的。

题:

如果用户(或可能是一个坏人)禁用JavaScript呢?

你迷路了!

  • JavaScriptvalidation值得吗?
  • 我们现在应该使用它吗?
  • 有没有解决办法?

纠正我,如果我错了。

JavaScriptvalidation值得吗?

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

我们现在应该使用它吗?

是的,出于上述原因。

有没有解决办法?

是的,也使用服务器端validation。

如果用户(或可能是一个坏人)禁用JavaScript?

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

我们现在应该使用它吗?

是的 – 所以用户立即看到什么是错的。 否则,他必须首先发回数据,这可能需要一段时间。 顺便说一句,你减lessstream量到你的服务器。

这只是更直观。

//编辑:顺便说一句:据我所知,ASP.NETvalidation规则包含客户端和服务器validation。

Javascriptvalidation是好的,因为它提供了更好的用户体验。

但是,您应该永远不要依赖它,而应该在服务器上进行validation。

JavaScript改进了您的产品或服务的用户交互 。 用户交互(用户input和机器响应,反之亦然)是我们应用程序的重要特征。 正如我们所经历的那样,产品比以前有了更多的互动。 而且这个交互部分可以(仅)用JavaScript( Flash Player的 ActionScript )制作。 我们都会同意这一点 – 总是有一个计算量的工作可以转移到客户端(机器),以避免打扰他们发送到服务器的呼叫。 许多应用程序严重依赖于客户端脚本脚本。 如果他们发现你不允许所需的脚本,他们要求它留下一个noscript标签的消息。 但是我想每个人都希望启用它,因为我们都使用Gmail,Facebook等来启动一个标签。

然而,这还是不容忽视的,因为我们热衷于抓住每一个机会(观众/客户),而且工作至less比分崩离析。 它仍然有效!

作为Microsoft开发平台用户,在.NET平台上有一个方便的解决scheme。 这不需要在这些问题上双重努力。 在使用Page.Validate()Page.IsValid 禁用脚本的同时,使用客户端validation。

 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!"); } } 

我希望这将有所帮助。

如果您希望节省时间,请仅使用服务器端。 如果您想要更好的性能和用户体验,请在后面添加客户端validation。 永远不要依靠客户端validation,因为你说的原因。 所有关键的validation应该发生在服务器上…即使在客户端上重复。

客户端(Javascript)validation是关于可用性,没有别的。 如果实施的成本不值得感觉可用性的增加,那就不要花时间在其上。 这些日子虽然很容易做!

我不认为你可以做没有服务器端validation,但是,因为这是唯一提供任何安全性的东西。

使用JavaScript并没有错。 我们很长一段时间以来一直在使用它。 它用于应用客户端validation。

不过,我们应该实现服务器端的validation,以便一个坏人不能打破应用程序。

如果你从这个话题只学到一件事情,就让它成为这样:

从来没有 – 在任何情况下 – 信任来自浏览器的数据,并始终在服务器端validation请求数据。

我们现在应该使用它吗?

当然是。 您不需要validation服务器端的空字段。 这不像validation电子邮件的可用性(电子邮件的唯一性)。 如果你打算拒绝这个空的字段,那么把它发送到服务器并使服务器为它做额外的工作是没有意义的。

你必须在服务器端validation它,JavaScript是很好的validationforms,但人们可以禁用JavaScript,或使用另一个JavaScript来破解它,所以在服务器端validation是必须的。

JavaScript对于客户端validation非常有用。 但是你不能只依靠他们。 您必须针对发布的数据使用服务器端validation。 JavaScript只是防止不必要的post到服务器。

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

http://peterblum.com/

通过这个,你可以将validation控件放到你的页面上,把它们连接到input(文本框,下拉列表等),并指定validation属性(最小长度,所需的,错误信息等)。 当页面运行时,框架为客户端(JavaScript)和服务器(ASP.NET)分配相应的代码来执行validation。

没有这样的框架,正如其他海报所指出的那样,validation可能是费力的。

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

你应该有多层validation。

在客户端validation

这是非常有用的,因为validation可以完成,而无需去服务器。 请求到达服务器后,validation – 节省一些stream量。

在服务器端validation

如果JavaScript被禁用,那么服务器也应该包含一个保护级别 – validation,以禁止错误的请求。

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

其次是客户端, 但更重要的是 ,服务器端代码应在数据层持久化或将其传递给另一个服务器端方法/服务之前对数据进行validation,以便在数据周围使用业务规则并帮助防止数据完整性方面的错误。 最后,持久层本身(数据库或其他存储机制的直接接口)应该validation正在存储的数据,以防止数据完整性错误和可能的业务规则。 你想要的最后一件事是一个数据存储没有用的数据。

采用这种方法将保证数据的安全性和完整性。 在您自己的站点(或通过Web服务,桌面应用程序或移动应用程序)重用您的持久层,数据层或您的前端演示文稿之后,如果devise正确,这些validation例程已经就位并且可以重新就业。 如果你在一个团队中工作,这应该certificate对你一个人,以及你的同事和你的pipe理者都有很大的好处。

 Is JavaScript validation worth of it? 

好吧,是的。购买使用JavaScriptvalidation您可以轻松地采取任何有关客户端网站的信息更多的JavaScriptvalidation提供了更好的用户体验

  Should we ever use it now? 

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

 Are there any solutions to this? 

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