换了蜜罐字段之后垃圾注册又回来了,抓包看脚本把备用的邮箱字段也填了值,表单里所有带邮箱字样的字段都被它按顺序填满。乍看像缓存或者权限的锅,追下去往往不是。

$honeypot = $_POST['field_7f3a'] ?? '';
if ($honeypot !== '') { http_response_code(400); exit; }

追下去是这么回事:蜜罐字段名用了可预测的后缀,脚本按字段名前缀批量填充,隐藏字段也照填。服务端只判断非空,反而把机器人放过去。

「蜜罐字段命名」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

具体做法是,蜜罐字段用和业务无关的随机名,每次部署换一次;除了非空,还校验字段是否被聚焦过,正常用户不会点到隐藏框;提交时记录填充耗时,过短的直接丢弃。

验收就看一点,同一脚本再跑,带备用邮箱字段的请求全部被拒,正常注册不受影响。

作者 9823189