我把这个接口的入参做了限制,绕过的方式少了很多。我深呼吸了一下,决定从最可疑的地方查起。我把这个连接的加密协议升到了最新,老客户端要升级。第二天这个方案就变成了团队标准做法

我把请求抓了一遍,发现有一个字段没人解释得清。我先确认了一遍前置条件,再动手。我发现这个接口在并发下会返回别人的数据。我把这条经验写进了团队 wiki

这个依赖有一个已知漏洞,升不升级都是风险。我发现自己居然没法反驳。我发现这个接口没有做权限校验,登录就能调。连茶水间都安静了

这个接口没有任何鉴权,因为它最初只在内部用。我想了想,觉得这话没法接。我把这条链路的 TLS 配好了,中间人风险小了。我把它写进了组内的避坑文档第一章

验证码由三位数字升级到六位,用户体验下降百分之百,机器人破解率下降百分之五。我想了想,觉得这话没法接。我把这个服务的依赖清单扫了一遍,有三个待升级。我把它写进了组内的避坑文档第一章

这个依赖有一个已知漏洞,升不升级都是风险。我把这个接口的入参做了严格校验,注入的风险降了。我沉默了,但心里是服的

这个服务的端口暴露在公网上,我们花了两天才收回来。我叹了口气,然后打开了编辑器。我把这个请求的源 IP 白名单配上了,越权访问没了。这大概就是程序员的人生吧

收到安全部门的漏洞通报邮件,附件里的截图是我的接口。这套流程走下来,我从头到尾又确认了一遍。我发现这个令牌的有效期设得过长,风险敞口大。办公室安静得能听见键盘声

我把这个令牌的有效期缩短了,用户的体验差了零点几秒。我把这个配置里的默认口令改掉了,终于不再是 admin。幸好之前留了备份

安全的问题大多出现在做减法的时候。我在心里点了点头。我发现这个依赖的版本有已知漏洞,赶紧升了级。办公室安静得能听见键盘声