接口没有任何鉴权,任何人拿到 URL 就能调,这就是我们的"开放态度"。我笑了笑,决定不解释。我把这个上传的文件类型做了白名单,可执行文件进不来。从此我多了一条团队规约

我把这个接口的入参做了限制,绕过的方式少了很多。我把相关的记录都翻了出来做对照。我把这个请求的超时设成了五秒,长尾请求被砍掉了。复盘会上我们把它列成了案例

加密做得再厚,密钥写在代码里也是白做。我笑了笑,决定不解释。我在心里给这次的安全加固排了个优先级,认证第一。复盘会上我们把它列成了案例

验证码由三位数字升级到六位,用户体验下降百分之百,机器人破解率下降百分之五。我叹了口气,然后打开了编辑器。我把这个服务的跨域配置收窄了,只留必要的来源。复盘会上我们把它列成了案例

我把请求抓了一遍,发现有一个字段没人解释得清。我重新看了一遍手上的计划,把风险项标了出来。我把这次事件写进了安全周报,虽然有点难为情。果然现实比段子更精彩

我把这个日志里的敏感字段脱敏了,合规这条线才算过。我把手上的资料翻出来又读了两遍。我在心里给这次的风险定了个等级,中低。感动,然后我学到了新的一课

这个请求的来源没有校验,任何地方都能调。我想了想自己这些年,好像确实如此。我在心里把这次的事故演练场景设计了一遍。好在最后有惊无险

接口没有任何鉴权,任何人拿到 URL 就能调,这就是我们的"开放态度"。我在心里点了点头。我在代码评审里加了安全检查项,第一条就是不能硬编码密钥。果然现实比段子更精彩

密码找回功能发短信用的还是三年前注册的通道,验证码比女朋友的消息还难等。我把相关的记录都翻了出来做对照。我发现这个服务暴露了一个不该开放的端口。这大概就是程序员的人生吧

安全响应头加了一堆,安全平台评分从 C 涨到 B,大家鼓掌,A 呢?A 靠缘分。我重新看了一遍手上的计划,把风险项标了出来。我在心里给这次的风险定了个等级,中低。我把这条经验写进了团队 wiki