如何处理客户端关闭Javascript?

时间:2011-06-15 20:24:05

标签: javascript .net asp.net client-server

我担心客户会出于安全原因在浏览器中关闭Javascript。我的Web应用程序在验证,AJAX等方面大量使用jQuery。

我的同事建议我也在服务器端进行验证。但是我在客户端也有一些显示/隐藏效果,例如,如果选中复选框,则会立即显示隐藏表。我知道设置autopostback = true,我也可以得到相同的效果。 但是,没有冲突吗?

我不知道有多少客户端浏览器不支持Javascript。我的同事还说有人可以修改javascript以绕过验证。随着服务器端的会话加速,这种黑客攻击是否可行,这有意义吗?我的Web应用程序是.net 3.5项目。我只是不知道如何说服他。任何建议都非常感激!

6 个答案:

答案 0 :(得分:2)

在处理已发布的表单时,您必须始终在服务器上执行验证。考虑一下 - 我可以用PHP创建一个小脚本并将POST数据创建到您的服务器而不使用您的表单!你永远不能依赖javascript验证。

Javascript验证就像锦上添花。它可以使您的表单更易于访问和更容易理解。但它本身并不是蛋糕。花些时间阅读“渐进增强”的概念:

http://www.alistapart.com/articles/understandingprogressiveenhancement

http://coding.smashingmagazine.com/2009/04/22/progressive-enhancement-what-it-is-and-how-to-use-it/

对于javascript密集的Web应用程序,有时渐进式增强不值得。例如,如果我正在为特定的内部使用制作基于Web的支付处理系统。我知道会有Firefox,我知道谁会使用它。如果有人试图在已知环境之外使用它,我不在乎它不起作用 - 它们不应该使用它。同样,如果我正在创建一个复杂的基于浏览器的图像编辑Web应用程序,那么应用程序的非JavaScript版本就不会有任何意义。

您必须评估您的最终产品是否可供最大的用户群访问,或者javascript带来的功能是否重要且具体到足以值得需要 javascript以便使用你的申请。在这些情况下,请查看noscript代码:https://developer.mozilla.org/en/HTML/Element/noscript

答案 1 :(得分:1)

您当然应该使用服务器端验证。如果你知道自己在做什么,很容易绕过客户端验证。

至于处理禁用JavaScript的用户,你可以做一些事情,例如在你的所有内容上方都有一个灯箱样式窗口,并带有“请启用JavaScript”等消息,然后在页面加载时用JavaScript删除灯箱

但是,现在绝大多数用户都启用了JavaScript。

答案 2 :(得分:0)

这就是为什么你应该总是在服务器上执行验证的原因。如果客户端禁用了javascript,则可以保证无论他输入的内容在处理之前都会得到正确验证。

答案 3 :(得分:0)

始终,始终在服务器端验证。客户端验证仅供用户使用。

但是,关于禁用的JavaScript。如果它对您很重要,那么请使用纯HTML / CSS编写。在绝大多数Web应用程序中,JavaScript是应用程序逻辑的标准部分。您不需要考虑禁用JavaScript的用户...它根本不是一个选项。

答案 4 :(得分:0)

由于您提到的问题,您应该始终在服务器上进行验证; javascript已关闭或修改。

请注意,许多自动回发功能也使用Javascript,因此大部分内容都无效。您必须决定如何继续前进。可能只是展示所有内容,并让服务器过滤掉不适合的选项。

您可以使用<noscript>元素通知用户相关表单不是针对非JavaScript浏览器设计的,并强烈建议他们启用它。您甚至可以默认隐藏整个表单,只显示在Ready()函数中,因此它只适用于javascript。 (请记住,您仍在验证服务器端的所有内容以解决恶意修改)

答案 5 :(得分:0)

  

我的同事还说有人可以修改javascript以绕过验证。随着服务器端的会话加速,这种黑客攻击是否可行,这有意义吗?

您对会话/身份验证的验证感到困惑。一个与另一个无关。是的,修改(或完全禁用)JavaScript可以绕过客户端验证。您应该考虑客户端验证,以帮助用户。它不应该依赖于您的业务逻辑,因为它可以被篡改。

因此,服务器端验证也是必须的。

如果您真的非常想确保客户端利用客户端验证的细节,请使用'noscript'块让他们知道“嘿,JavaScript被禁用。为了改善用户体验,请重新-enable JavaScript“