安全 · 综合
保护公开接口
一句话: 一个对互联网开放的接口,从第一天起就会被自动扫描——请假定每条路由都会被调用,以任意顺序、用任意输入。
基础
每条路由都要认证,包括那些看起来没意思的。要对资源做授权校验,而不只是校验连接。按调用方限流。以及限制请求大小,包括嵌套深度。
安静的暴露
返回了超出需要的字段的列表、会暴露「存在与否」的结果计数,以及把「不存在」和「无权限」区分开的提示。这三者都能让人在什么都没攻破的情况下把系统摸清。
只返回必要的,并保持拒绝行为的一致。
管理调用方的密钥
每个调用方一把密钥、明确的权限、可以立即吊销的能力,以及使用日志。还要有一份明确说明「用这个接口可以做什么、不可以做什么」的文档。
深入一层
记录被拒绝的请求,并对模式告警:路由扫描、连续标识符的尝试、来自单一来源的异常速率。大多数利用尝试,在成功之前很久就出现在这些噪音里了。