漏洞反馈
上周三凌晨两点,漏洞反馈我盯着屏幕上那个“订单提交成功”的漏洞反馈弹窗,手里攥着已经凉透的漏洞反馈咖啡。页面刷新三次,漏洞反馈数据库里硬是漏洞反馈找不到那条记录。用户ID、漏洞反馈时间戳、漏洞反馈商品编号全对得上,漏洞反馈唯独状态字段卡在“待处理”不动了。漏洞反馈这不是漏洞反馈第一次。 做后台开发六年,漏洞反馈我养成了一个习惯:每次上线新功能,漏洞反馈先自己当两天“刁民”。漏洞反馈专挑边界条件试——空输入、漏洞反馈超长字符串、漏洞反馈并发点击、断网重连。去年双十一前,测试组报上来一个“优惠券叠加后金额为负”的漏洞,复现步骤写了三页。我照着跑了一遍,发现根因是浮点数精度丢失。修完那个bug,我顺手把整个结算模块的数值类型从float换成了decimal。没人要求,但我觉得该这么干。 漏洞反馈这事,最怕两种人。一种是“我随便点点就崩了”,另一种是“这功能本来就有问题”。前者让你无从下手,后者让你想摔键盘。真正有用的反馈长什么样?我举个例子。上个月有个用户发来邮件,标题是“批量导入Excel时第37行开始数据错位”。正文里贴了截图,标注了表头列数和实际解析列数的差异,还附上了脱敏后的测试文件。我打开代码一看,果然——解析库对合并单元格的处理逻辑有缺陷,遇到空列会跳位。二十分钟定位,半小时修复。这种反馈,我恨不得给对方发红包。 但大多数情况没这么理想。公司内部有个漏洞跟踪系统,每天涌进来几十条。我扫一眼标题就能判断质量:“登录页面报错”——这种直接扔回去,连复现路径都没有。“iOS 16.4 下点击头像上传,选完照片后返回键失效,安卓正常”——这条我立刻标为高优先级。区别在哪?前者是情绪,后者是信息。 我自己提漏洞时有个笨办法:录屏。手机对着电脑屏幕拍,一边操作一边念“现在点这里,注意看这个数字变了”。录完把视频拖进反馈单,再补一句“我猜可能是缓存没清,但没证据”。开发同事说,看到这种反馈,血压都稳了。 还有个坑得提。很多人觉得“漏洞反馈”就是挑刺,其实不是。有次我发现某个接口在特定参数下返回了多余字段,顺手写了句“虽然不影响功能,但可能泄露内部ID”。后来安全组顺着这条线索,挖出一个越权访问的隐患。反馈的价值不在于问题大小,在于它能不能让系统变得更“紧”。 说回开头那个订单漏洞。我最后在日志里翻到一条被忽略的警告:消息队列的消费者线程池满了,导致状态更新消息积压。表面看是数据库写入失败,实际是异步任务堵了。如果当时只盯着SQL查,三天也修不好。所以我现在看反馈,先看“现象”,再看“环境”,最后才猜“原因”。顺序反了,容易钻牛角尖。 写这篇文章前,我又打开那个跟踪系统。最新一条是运营同事提的:“后台导出报表,选‘本月’时日期范围包含了下月1号的数据。”附了截图,红框圈出多出来的那一行。我笑了笑,回复:“收到,马上看。”——这种反馈,比咖啡管用。