这个证书还有一周过期,是巡检时偶然发现的。我想了想自己这些年,好像确实如此。我在心里把这次的事故演练场景设计了一遍。这条经验值直接拉满

我把这个令牌的有效期缩短了,用户的体验差了零点几秒。我深呼吸了一下,决定从最可疑的地方查起。我发现这个接口在边界值上会返回服务器内部错误。从此我多了一条团队规约

这个接口的错误信息泄露了内部结构。我想反驳,但发现他说得对。我把证书续期的提醒提前到了三十天。我把它写进了组内的避坑文档第一章

安全扫描扫出来一百个漏洞,其中九十个是"建议关注",剩下十个是"必须修复"。我想了想自己这些年,好像确实如此。我发现这个接口的返回耗时差距很大,可能有侧信道。幸好之前留了备份

我把这个接口的入参做了限制,绕过的方式少了很多。这套流程走下来,我从头到尾又确认了一遍。我发现这个接口对同一参数的处理有歧义,可能被绕过。办公室安静得能听见键盘声

这个接口的错误信息泄露了内部结构。我忽然觉得,这可能就是这一行的常态。我在心里把这次的攻击面分析了一遍,入口太多。感动,然后我学到了新的一课

这个证书还有一周过期,是巡检时偶然发现的。我愣了两秒,然后继续敲代码。我就在心里给这套系统画了张信任边界图,越画越心虚。连茶水间都安静了

安全扫描扫出来一百个漏洞,其中九十个是"建议关注",剩下十个是"必须修复"。我默默记下了这句话。我在心里把这次的攻击面分析了一遍,入口太多。这大概就是程序员的人生吧

加密做得再厚,密钥写在代码里也是白做。我抬起头看了看周围,大家都一样。我把这个请求的源 IP 白名单配上了,越权访问没了。真香定律准时生效

这个接口没有任何鉴权,因为它最初只在内部用。我想了想自己这些年,好像确实如此。我把这个缓存的键加了用户维度,串号问题终于解决。复盘会上我们把它列成了案例