14. 客户端和服务端校验的必要性

我们会在客户端进行必要的验证,不仅增加数据的准确性也减少了数据流量,但客户端的验证可靠吗?

我们做个网页,在网页中放一个textbox和button,当用户点击button时,我们判断textbox 中我拉输入的值的大小,大于100则不给出提示,小于等于100则提示正常。

在asp.net中,button有个onclientclick属性(不是事件),它响应的操作是在客户端进行的,它另有个onclick事件是在服务端完成的,

以下为它的关键源代码:

 <asp:Button ID="Button4" runat="server" onclick="Button4_Click" 
            Text="输入数值不能大于100" OnClientClick="var value=document.getElementById('TextBox1').value;if (value>100){alert('输入的值不能大于100');return false;}" />

它的onclick事件为(msg是一个label,用来显示信息):

  protected void Button4_Click(object sender, EventArgs e)
    {
        //int i = Convert.ToInt32(TextBox1.Text);
msg.Text = "输入的值符合条件."; }

此时我们浏览页面,当输入 的值大于100时会弹出窗口提示并不会请求页面,此时是正常的。

我们把浏览器的js禁用下,然后再运行输入大于100的值,这时并不会弹出窗口,用户可以顺利的执行下一步的操作。

这时把服务端也加强控制即服务端校验,如下源码:

   protected void Button4_Click(object sender, EventArgs e)
    {
        int i = Convert.ToInt32(TextBox1.Text);
        if (i > 100)
        {
            msg.Text = "不能输入大于100的数据";
        }
        else
            msg.Text = "输入的值符合条件.";
    }

这时再提交网页,你会发现即使浏览器不能正常验证,但服务端却成功校验了。

因此在做校验时客户端和服务端都要进行安全校验,这两者一个都不能少,客户端校验只是方便用户,但可以绕过浏览器不进行正常校验,服务端是最终校验。

Asp.net的Validation就是在客户端和服务端都 进行检验的类。

原文地址:https://www.cnblogs.com/yagzh2000/p/3115411.html