JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。
表单数据经常需要使用 JavaScript 来验证其正确性:
-
验证表单数据是否为空?
-
验证输入是否是一个正确的email地址?
-
验证日期是否输入正确?
-
验证表单输入内容是否为数字型?
2、JS-Ajax 传递-登录-状态
验证上传文件的是否符合要求既可以通过前端js代码验证,也可以通过后端PHP代码验证
他们的区别如下:
前端的任何代码都可以被检查网页源代码检测出来
后端的任何代码在没有拿到源码之前都无法被识别出来
通过禁用JS代码可以绕过js的前端验证
判断前端验证是否为JS代码:
1.直接查看网页源代码
$.ajax({ url:"发送请求(提交或读取数据)的地址", dataType:"预期服务器返回数据的类型", type:"请求方式", async:"true/false", data:{发送到/读取后台(服务器)的数据}, success:function(data){请求成功时执行}, //此步产生状态码 error:function(){请求失败时执行} });
Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式
它可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面,在这种情况下,浏览器可以做自己的事情。直到成功获取响应后,浏览器才开始处理响应数据
XML
抓取数据包篡改数据即可以绕过前端验证。
设计 2:商品价格以数据库对应价格为准,数据接收价格后运算
此案例中,前端代码接收数据库价格数据并且发送,后端代码接收前端发送的价格数据,但是后端控制代码并没有从数据库中取出数据,所以同样也可以通过抓取数据包篡改数据来达到攻击目的。但是如果后端代码不从前端接收价格,而是从数据库中直接接收价格,那么此攻击将无效。
设计 3:商品价格以数据库对应价格为准,数据只接受数量后运算
修改了数据包中的商品价格,依然不影响最终结果,因为后端直接接收数据库中的商品数据。
但是
如果将购买数量修改为非正整数,那么此时将依据计算机自主判断,例如,数量=0.01,-1,0.09等。
设计 4:商品价格以数据库对应价格为准,数据只接受数量后做过滤运算
正常设计。
演示案例:
JS&Ajax 前端&上传&登录&购物