zoukankan      html  css  js  c++  java
  • 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就是在客户端和服务端都 进行检验的类。

  • 相关阅读:
    git 相关
    3D渲染相关基本概念
    c#调用GDAL判断图片文件是否损坏
    8.26 轩然大波
    宽容与未来
    vue学习:打开/刷新一个页面时,触发一个后端请求
    linux histroy显示时间
    从数的角度理解视角转换
    对非法网站的一次提权
    简单的BC站点getshell
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3115411.html
Copyright © 2011-2022 走看看