如何绕过客户端JS验证(图文讲解)

时间:2022-11-04 14:15:19

我记得在刚接触ASP.NET编程的时候,微软帮助文档就特别强调,不能相信客户端提交的任何数据,我们都要假象客户端提交的数据都是不安全的,所 以我们要对客户端提交的数据进行验证,所以.net里面给我们提供了验证控件,很方便,但是你在看这些控件的使用帮助的时候,微软肯定一样会强调,我们在 前台验证后,还需要服务端验证,为什么呢?估计很多新手会问了,.net里面的验证控件不是服务器控件吗?验证控件确实是服务器端控件,但是你要知道,这些服务器控件仅仅是把客户端验证的功能封装了而已,所以那些验证控件,其实还是客服端验证,而所有客户端验证,都不是真正的最安全的验证方法,我们必须要要进行服务端验证。为什么呢,请接着继续看。

相信作为程序员,都会按照火狐浏览器,如果是经常进行web前端开发的话,肯定离不开火狐浏览器的。

安装好FireBug插件

然后,用快捷键F12,就会弹出FireBug窗口

如何绕过客户端JS验证(图文讲解)

我写了一个简单的注册登录的功能,用了.net服务器验证控件,对输入进行验证,但是没有在服务端进行验证

 

如何绕过客户端JS验证(图文讲解)

首先,我们不填写数据,提交注册按钮,我们知道,肯定提交不了的,如上图

如何绕过客户端JS验证(图文讲解)

 

然后按着上面步骤操作,把红框里的代码:

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(“Button1″, “”, true, “1″, “”, false, false))

删除掉,然后点击提交按钮,你会发现,数据竟然提交成功了,为什么呢?

这就是我上面说的,其实.net的服务器验证控件,其实就是客户端验证,没有进行服务端验证的原因

当我们删除验证事件的时候,自然就不能进行验证了,也就是我要说的主题,绕过了客户端JS验证

 

后面我再用同样的方法,去掉登录的客户端验证代码,什么都不输入,进行登录,结果是登录成功

互联网上存在很多网站,不管是.net开发的,还是PHP,还是JAVA,如果不进行服务端验证,按这个方法操作,都能绕过客户端验证

 

其实现在我们很多没有安全意识的程序员,或者新手,都会忽略掉服务端验证,原因之一是,他们完全没有这个意识,即不懂。

再者是有些程序员抱着侥幸的心理,或者说是偷懒,以为客户端验证了,服务端不验证,没事,一般人察觉不出来,可正是他们这种侥幸的心理,从而让他们的网站存在安全隐患。

除了利用火狐浏览器能够绕过客户端JS验证,其实在黑客手里还有很多更加专业的工具,所以对数据进行客户端和服务端验证,非常有必要,也非常重要