一个网站的注册信息:在客户端和服务器端都要进行验证.(如用户名是否合法  两次输入的密码是否一致....)
当初我以为验证控件只在客户端验证一次就行了.
可是老师说有可能写个程序绕过客户端再注册到服务器,所以要通过两次验证(现实中都是这样.这是真理)
我的理解:既然在客户端和服务器端都做相同的验证,程序既然能从客户端绕过,为什么就不能从服务器端绕过呢?难道在服务器端做的验证不同于客户端吗?
大哥们给个正确的说法...谢谢

解决方案 »

  1.   

    为了保证我们收集到的数据是有价值的,我们需要对用户提交的数据进行验证。但在Web应用程序中用户提交的数据经客户端浏览器发送至服务器端,我们可以选择在窗体发送到Web服务器之前使用JavaScript脚本验证输入到窗体上的数据,这称之为客户端验证;也可以在Web服务器验证用户提交的数据,这称之为服务器端验证。
    两种验证各有其优缺点,在客户端代码中对用户的信息进行验证的优点是可以向用户提供快速的反馈,当用户的信息输入有错误的时候,可以立即显示一条错误信息,而不需要将这些数据传输到服务器,减少了服务器处理的压力。但是,客户端验证不太安全,用户可以很容易就查看到页面的代码,而且有可能伪造提交的数据,如果浏览器版本过低或者浏览器禁用了客户端脚本,客户端验证就无效了。服务器端验证相对而言很安全,因为这种验证是基于服务器端验证的,不容易被绕过,而也可以不考虑客户端的浏览器是否支持客户端脚本语言,但相对于客户端验证而言比较慢,而且有些验证也只能在服务器端进行,比如你申请的用户名是否已经被注册过了。
    现在通用的方式是先进行客户端验证,在窗体传送到服务器后,再使用服务器端验证,这样可以综合这两种验证的优点。