绕开客户端JS验证

来源:互联网 发布:python kgram算法 编辑:程序博客网 时间:2024/06/07 05:42

   微软帮助文档特别强调,不能相信客户端提交的任何数据,我们都要假设客户端提交的数据都是不安全的,所以我们要对客户端提交的数据进行验证,.asp.net给我们提供了验证控件,很方便,但是你在看这些控件的使用帮助的时候,微软肯定一样会强调,我们在前端验证后,还需要服务端验证,这是为什么呢?很多人可能会问asp.net里面的验证控件不是服务器控件吗?验证控件确实是服务器端控件,但是,这些服务器控件,仅仅是把客户端验证的功能封装了而已。所以这些控件本质还是客户端验证,而所有客户端验证,都不是真正的最安全的验证方式,所以我们必须要进行服务器端验证。

   我们在进行表单提交之前往往要进行表单校验,如文本框是否为空?是否包含为法字段?然而在进行web开发的过程中仅仅进行前端校验是远远不够的。因为能通过一些方式跳过前端的校验,因此服务端也非常有必要写校验的方法。

方法一:将脚本检查的地方去掉,或将引入的js后缀名更换成任意的名字

   以简单的注册登录功能为例,用.net服务器验证控件,对输入进行验证,但没有在服务端进行验证,首先,我们不填写数据,提交注册按钮,肯定不成功。




  使用火狐,F12,把红框里的代码删掉,然后不输入任何东西,直接点击提交按钮,你会发现,数据竟然提交成功了。

方法二、在浏览器设置中,设置禁用脚本

   绕开前端验证的方式有很多种,因此在系统中如只加入前端的有效验证,而忽略服务器端验证,是一件很可怕的事情,但如果只有服务器端验证,则服务器端的负担会加重,前端验证可以保证大部分请求时有效、友善的;所以我们应该在自己的系统中将这两种验证方式结合起来使用。

   客户端的JS验证其实是提高用户体验,让用户提前知道自己填写的表单的对错(ajax),否则等到点击提交按钮才返回错误信息,用户体验会非常不好。

   JS知识一个辅助验证,是为了减少不必要的提交,比如提交一大堆数据过去,发现有一个数据不合法,服务器禁止提交,这样是大大浪费资源的。

   进行数据提交的可能不是浏览器,而是一些模拟发送工具。比如filder,等 






原创粉丝点击