绕开JS验证的方法汇总

1.应用场景

用于请求接口测试.[比如后端接口安全测试]

2.学习/操作

前言:

服务器端验证是必要的.

 

方法汇总

方法一

将页面保存到自己机器上, 然后把脚本检查的地方去掉,最后在自己机器上运行那个页面即可.

 

测试结果:

TBD

方法二 //即 使验证的js脚本不生效.

该方式与方法一类似一样, 只是将引入js的语句删掉, 或则将引入的js后缀名更换成任意的名字, 就OK.

方法三

在浏览器地址栏中直接输入请求URL及参数,发送get请求, 即可.

 

但如果是post请求,

同时post主体请求参数在浏览器中不好修改,[或者不想修改]

推荐参考:

https://blog.csdn.net/william_n/article/details/104995351  // 2. 调试 --- 发送请求[xhr]

方法四

在浏览器设置中,设置禁用脚本

总结:

绕开前端的验证的方式有很多种,因此在系统中如只加入前端的有效验证,而忽略服务器端验证,是一件很可怕的事情;

但如果只有服务器端验证就那么服务器端的负担会加重,因为前端验证可以保证大部分请求是有效,友善的;

所以我们应该在自己的系统中将其这两种验证方式结合起来使用.

3.问题/补充

1.如果客户端禁用了 javascript 那如何进行验证?

服务端是必须进行验证的,这是最后一道防线,马虎不得。

举个例子:如果服务端不验证,那么完全可以在任何连接互联网的地方重写一个没有JS验证的表单,然后提交给你网站的程序,后果可想而知,几乎就是自由出入.

 

客户端的JS验证其实质是提升用户体验,可以让用户提前知道填写资料的对错,否则等到一提交,再返回个错误,把原来填的都清空了,那就抓狂了

根据Javascript优雅退化的原则,页面要在禁用JS的情况下仍然能够正常使用。虽然可能用户体验差了点,少了某些效果,但基本的功能都还是可以实现的.

所以,不要过分地依赖JS,服务端该验证的还得验证.

 

写服务器程序,给你一个提醒: 不要相信任何客户端数据,

JS只是一个辅助验证, 是为了减轻不必要的提交, 比如提交大堆数据过去, 发现有一个数据不合法, 这样岂不是浪费服务器资源?!

 

但服务器端的是少不了这些验证的, 因为提交者可能不是浏览器,即一些模拟发送工具.

 

2.服务器是否能区分请求是来自于浏览器还是模拟请求工具?

TBD

 

4.参考

http://www.360doc.com/content/13/0925/21/13812121_317077519.shtml  //介绍几个绕开JS验证的方法(服务器端验证是必要的)

https://blog.csdn.net/william_n/article/details/104995351  // 浏览器 个人实践/理解

后续补充

...

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章