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

  • 相关阅读:
    php 多进程
    关于TP的RBAC的使用
    谈谈自己对于Auth2.0的见解
    php 写队列
    关于thinkphp中Hook钩子的解析
    JS的闭包
    单链表的查找和取值-1
    shell输入输出重定向
    转-Visual Studio控制台程序输出窗口一闪而过的解决方法
    linux下如何调用不同目录下的.h 库文件
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3115411.html
Copyright © 2011-2022 走看看