[译]为何我们需要同时拥有客户端和服务器端的验证手续

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

源地址在此:

https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

 

本次视频我们会讨论,为何我们需要同时拥有客户端和服务器端的验证手续的原因.同时这也是一个很常见的面试问题.

 

客户端的验证过程很容易失效,因为客户端的浏览器可以很容易的阻止Javascript运行.比如,以下的例子就是如何在Google Chrome浏览器下阻止Javascript的过程:

1.打开Google Chrome浏览器

2.点击浏览器右上角的自定义按钮

3.在菜单中选择设置

4.在搜索设置文本框中输入Javascript

5.点击"内容设置"按钮

6.在"Javascript"的目录下选择"不允许任何网页运行Javascript"的按钮选项

7.关闭"内容设置"窗口

 

在第一讲中的程序中,把ValidatForm()方法标注掉.这样就变成了一个服务器端的验证表格输入内容的形式.此时在btnSubmit_Click()方法中的代码应该如下所示.

protected void btnSubmit_Click(pbject sender, EventArgs e){
    //if (ValidatForm())
    //{
        SaveData();
    //}
}    

 

所以,此时

1.我们在客户端浏览器上阻止了Javascript

2.我们没有任何服务器端的验证程序

 

运行程序并且点击Submit按钮,同时保证并不输入任何数据.注意到在用户的表格里插入了一个空白行

 

这是因为我们阻止了Javascript导致客户端验证程序失效,同时又没有添加任何服务器端对于表格的验证程序,所以才会发上以上情况.这就是为什么我们需要同时拥有客户端和服务器端的验证手续的原因之一.

 

如果我们阻止了Javascript运行,又没有任何服务器端的验证手续,那么可能会有各种各样的问题发生,比如储存了无效的数据以及安全隐患等等问题

 

客户端验证程序通过减少不必要的客户端与服务器端的交互来提供更好的用户体验.所以客户端验证手续我们是乐于添加的

 

但是,如果Javascript被阻止,或者用户通过类似fiddler之类的工具来提交请求,我们依然像要在存储数据之前验证一下表格.因此,服务器端的验证程序无论如何都应该存在,不管是否我们已经拥有了客户端的验证程序.

posted @ 2017-10-02 02:45  马大欧  阅读(306)  评论(0编辑  收藏  举报