表单批量提交之后,数据库中塞满了无效数据,通知邮件也会干扰到运营人员的判断。防护要分层次进行,仅用验证码来阻挡脚本和劝退真实用户是不行的。

第一层限频。根据来源地址和设备标识来统计提交间隔,同源的在一分钟内超过两次就直接拒绝并记录。第二层人机校验。当无感知校验失败的时候再弹出图形验证,减少对正常提交的干扰。第三层内容规则。手机号和邮箱格式前置校验,拦截高频重复的同内容提交。第四层行为特征。填写时间太短、隐藏字段被填、提交路径没有经过页面加载,都判定为异常。
规则要灰度上线,先观察一周命中样本,然后切换到拒绝模式。
拦截后与日志中真实的转化进行对比,误伤的比例可以控制,防护才算是有效的。