一夜之间多出两千个账号,邮箱全是同一域名的随机地址,用户表里邮箱确认标记全是 0,但账号已经能登录并发帖。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,注册接口建完账号直接返回登录态,登录逻辑也没检查邮箱是否确认。验证邮件发了,但确认与否不影响任何权限。

碰到「邮箱验证绕过」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

if (!$user->email_verified) {
  return response()->json(['error' => '请先验证邮箱'], 403);
}

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

具体做法是,未确认邮箱的账号只能访问验证页,其他接口一律 403;同一个邮箱域注册超过十个就走人工审核;用未确认账号调发帖接口,确认被拒。

最后用这个标准收尾,未验证账号登录后只能看到验证提示,发帖接口返回 403,批量注册的号无法使用。

作者 9823189