• 写在开始前表单数据校验


    为什么要校验?

    恶意操作数据,数据格式不符合数据库业务要求。

    校验哪些方面规则?

    是否字段存在;

    是否必填;

    是否长度适合;

    是否在某个范围,是否特定值;

    是否特定类型:整数,数字,全字符,字符数字组合,汉字,其他组合;

    是否特定格式:电话,url,邮箱,ip,时间日期,mac地址,id卡,ic卡;

    根据预设类型,设置判断条件及错误信息。比如:

    邮箱有@,手机号全11位数字等。

    哪里校验?

    web前端校验,后端也要校验,甚至数据库也可以,比如存储过程(注意注入问题)。前端较快,用户体验好,但可以越过,后端在服务器接收到表单入库前再进行一次校验。对于业务来说,前端可以没有,但是后端必须要有。某些场景下,用存储过程更好。

    参数传递校验模式

    透传模式: 透传模式下,API网关除Path位置的请求参数外,不对其他位置的请求参数进行映射与校验,用户参数会透明传递给后端,详细请阅读章节2. 透传模式。
    
    映射模式: 映射模式下,API网关会根据用户配置的所有参数执行校验与映射,如果客户端传递了未在配置中的参数,参数将会被API网关过滤掉,不会转发给后端,详细请参考章节3. 映射模式。
    
    透明映射模式: 类似映射模式,但在透明映射模式下,如果用户传递了未配置的参数,参数会被透明转发给后端,详细请参考章节4. 透明映射模式。
    
    参考:https://help.aliyun.com/document_detail/154721.html

    根据实际情况需要选择哪种参数传递模式,再和校验功能合并,获取一个有效的表单及其数据键值。

    校验原理?

    正则表达式?是一个好东西,对于文本的处理非常方便,比如查找替换格式匹配等。看了几个参数校验相关库,每一个都有正则表达式的影子。语言内部能处理语言本身定义好的类型,但是粗粒度,配合正则一起达到校验的目的。

    项目结构与校验方式

    根据项目的特点,选择校验的书写的方式。成品项目,在控制层接到参数,在控制层校验,这里可以使用各种第三方库包,面向对象面向过程式都可以。如果是可定制修改项目,参数的格式信息和对应的不匹配错误提示信息要配置在数据库。控制层收到参数,还要查询数据库,然后做校验。这个时候,首先要设计配置数据的格式,方便存储和读取解析,再或者干脆在存储过程校验。

    表单重复提交

    重复提交可以在前端拦截,比如提交完按钮禁用,或生成表单唯一id缓存,提交前校验下。前端可越过,还是靠后端校验稳妥。后端可以接收表单数据及表单id,session会话或redis里缓存该表单id和接收时间,下次提交时,拿表单id和时间与会话或redis里的比对,id匹配且未超过设置的时间间隔即为重复提交。

  • 相关阅读:
    支付宝H5、APP支付服务端的区别(php)
    微信小程序快速转成百度小程序的方法
    pm2命令管理启动的nodejs项目进程
    CentOS7 宝塔搭配git 实时更新项目源码
    CentOS7 搭建GIT环境
    Json数据交互
    HTML标签大全
    Java集合
    JavaSE基础知识
    idea2019版本及以下全家桶永久破解
  • 原文地址:https://www.cnblogs.com/thingk/p/15957059.html
Copyright © 2020-2023  润新知