前台验证数据格式
后台验证的是数据的正确性
当下流行的系统架构方案中,前端和后端都是分离开的。
目的:① 为了方便前端开发人员和后端开发人员可以同时开发;② 前后端分离也使得前后端的代码可以分开进行管理,方便了各自的版本迭代及控制。
1.1前端校验
就是通过前端技术,在浏览器(B/S模式中的B(browser)端)上面可以进行简单的数据检查。
如果前端不进行任何的数据检查,直接把数据发送给后端,让后端来进行检查的话,那么就会带来这样的问题:
太浪费网络,对于网站本身来说完全就是在浪费流量,增加了不必要的服务器压力。因为前端发起的每次请求都要给到后端,而后端是部署在我们的服务器上的。每次请求过来,服务器都要予以响应。而实际上,对于一些很简单的校验,完全可以在用户的浏览器上完成,没必要专门让服务器去校验。
有必要在前端校验的
必填项、(邮箱、电话号、地址)格式、密码强度检测。
比如手机号码,邮箱号不合法,或者密码强度太弱,在前端校验可以不等后端返回,直接提醒用户不合法,让用户及时知晓并更改,避免不必要的提交,再等待服务器返回错误信息。
1.2后端校验
Q1:为什么有后端校验?
A1:① 因为后端对于前端传送过来的数据不信任。
因为数据在网络传输过程中有可能被不法分子给篡改了。毕竟,网络存在安全隐患。当然,解决网络安全常用的方式有:HTTPS、加签名等(我对这个不太了解,所以不进行说明了)。
② 前端传送过来的数据有可能后端的业务逻辑根本不支持。比如说,如下图所示,【使用状态】可选择的值只有3种。结果,前端传送了一个使用状态值为5的数据给到后端。而后端开发人员的开发能力参差不齐,有可能针对使用状态为5的这种情况无法处理甚至直接导致数据库数据混乱。
Q2:后端校验分为哪些大类?
A2:大的粒度上分为两类:① 针对前端传送过来的数据属性进行【接口层面】的数据校验;② 业务逻辑校验。
我们这里重点要说明的是情况 ① 针对前端传送过来的数据属性进行接口层面的数据校验。这种校验不带有任何的业务逻辑层面的校验,只是简单的数据合法性校验。
比如说,手机号码只能是11位,年龄不能是负数,性别只能是男、女、其他(可能有,我不清楚)等等,类似这种最简单的数据校验。用户名重复校验,必须提交后台查询数据库,返回是否重复。
必须在后端校验的
唯一性验证,验证码,敏感词,出错概率高的要做异步校验。对数据库中的相应字段进行校验,比如建立主外键约束、控制字段长度、是否为空、是否可重复等。
后端校验可以防止接口被私自调用导致破坏数据库结构;避免有人模拟浏览器行为直接给服务器发请求。
后端校验可以防止接口被私自调用导致破坏数据库结构;避免有人模拟浏览器行为直接给服务器发请求。
1.3 前后端校验
只做了前端检验,用户可以通过浏览器的控制台来人为的修改前端代码,所以:
- 后端验证必须存在
- 前端是为了更好的用户体验
所以,追求用户体验的情况下,二者都是需要的。