• 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就是在客户端和服务端都 进行检验的类。

  • 相关阅读:
    PHPCMS的自增长标签
    discuz!X2头像无法显示解决方法
    屏蔽“您目前使用的Discuz!程序有新版本发布,请及时升级!”提示
    python +Django 搭建web开发环境初步,显示当前时间
    Java之美[从菜鸟到高手演变]之设计模式四
    Java之美[从菜鸟到高手演变]之设计模式三
    Java之美[从菜鸟到高手演变]之设计模式二
    Java开发中的23种设计模式详解
    Cglib动态代理
    JSP 对象的作用范围
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3115411.html
Copyright © 2020-2023  润新知