接口参数校验checklist
1.什么时候我们会前、后端校验?
正常情况下,前后端对于请求的参数都需要校验的,这能提高应用程序的稳定性、可维护性,而对于前后台如果能将这种不可缺少校验规则汇总并制定一套规范,在每一个应用程序中都使用这种规范,能给带来不少好处。那在哪些情况下适合使用前、后端校验了:
- 应用程序业务单一、后期维护少、不涉及敏感信息,如:公司内部OA系统,这种系统可以直接使用前端校验,而这里的前端参数校验可以使用:H5表单校验或者封装常用校验JS文件。
- 应用程序业务单一、后期维护少;如:支付系统,由于支付系统可能会有其他公司对接平台的接口,所有这种前端校验就交给其他公司了,我们只需要做好后端校验就行。
- 业务复杂、后期维护多、安全可用性要求高,如:电商项目的维护,这种方式要同时使用前后端校验,前端校验的目的是为了把更多的错误请求都在浏览器层面就已经拦截处理,不会消耗服务端的内存和线程数,可以提高性能;对于还要进行后端校验是为了提高系统的稳定性,防止一些恶意攻击网站等。
2.接口参数校验checklist
当接口请求参数不符合API约定,期望返回明确的提示信息
| 参数校验点 | 接口返回建议 | 
| 参数缺少时 | 提示:缺少参数 | 
| 参数必填校验 | 例如:account不能为空 | 
| 参数边界值校验 | 例如:账号长度必须是6-11个字符 | 
| 参数类型 | 例如:amount必须为正整数 | 
| 枚举不匹配 | 例如:证件类型不正确 | 
| 身份权限验证 | 例如:普通用户操作管理员功能 | 
| 密码不能明文传输 | 
 | 
| 上传文件接口 | 例如只能上传图片 不可以上传其他文件或者伪装成图片的可执行文件 | 
| 写接口不能写入可造成XSS攻击的内容 | 例如验证: <script>alert('1')</script>, 看数据库是否把<>替换成其他字符< >或者被过滤掉 | 
| 复杂事务流程不能跳过某项流程 | 例如:某个事务流程是A->B->C->D才能完成 验证项:A->B->D 事务要拒绝或者并且将状态重置回初始状态 | 
参照:
[1] https://cloud.tencent.com/developer/article/1453291
[2] https://blog.51cto.com/u_15127702/2854153
    -----------------------------------------Have a good day!---------------------------------------------------------------------------------------------------
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号