新用户把昵称设成广告词,评论区每条留言后面都跟着这串字,一天出现 200 多次,举报入口收到 30 条。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
UPDATE users SET nickname=CONCAT('user_', id) WHERE id IN (
SELECT user_id FROM nickname_audit WHERE hit=1
);
注册流程只校验了长度和字符集,没有调用敏感词接口。昵称在多个页面展示,改一次要清很多缓存。这一点先确认清楚,后面就不用反复试。
碰到「昵称未审核」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
具体做法是,注册和改名时都调用同一个审核方法;历史昵称做一次批量扫描,命中的强制改名;展示层加兜底过滤,避免漏网内容直接输出。
改完照着核一遍,新注册的违规昵称被拒绝,历史命中昵称显示为默认名。
