接口定义完,别急着写代码
很多人在完成接口定义后,第一反应就是打开编辑器开始写实现代码。但实际工作中,这步太急了容易踩坑。尤其是在网络安全相关的项目里,接口一旦上线,暴露的攻击面就固定了,后续修补成本很高。
先做安全评审
接口字段、请求方式、认证机制都定下来了,正好拿去开个安全评审会。让安全部门或有经验的同事看看有没有明显的漏洞风险。比如一个用户信息查询接口用了 GET 方法传用户 ID,看似方便,但日志里可能直接泄露敏感参数。改成 POST 或者用加密 ID 会更稳妥。
常见问题还包括:有没有对输入做过滤?错误信息会不会泄露系统结构?比如返回“user not found”和“password incorrect”其实是告诉攻击者这个用户名是否存在,相当于变相枚举。
写测试用例,尤其是异常场景
别只测“正常流程能通”。攻击者从来不按常理出牌。试试传超长字符串、特殊字符、SQL 关键字、跨站脚本片段。比如一个头像上传接口允许传 URL,结果没校验协议,攻击者填个 file:///etc/passwd 就可能读到服务器文件。
这时候测试用例就得覆盖这些边界情况。可以用工具自动化跑,比如 Postman 配合 Newman 做批量测试,或者用 OWASP ZAP 扫描常见漏洞。
加认证和限流
就算内部接口也不能裸奔。JWT、OAuth2、API Key 选一个合适的加上。比如后台管理接口用 API Key + IP 白名单,对外接口用 OAuth2 刷新机制。
同时配上限流策略。Nginx 或网关层设置每秒请求数限制。不然被恶意刷接口,轻则服务卡顿,重则数据库被打崩。之前有公司没做限流,爬虫一天调用几百万次,账单直接翻倍。
location /api/user {
limit_req zone=api_limit burst=10 nodelay;
proxy_pass http://backend;
}生成文档并同步给前端
别口头说“我接口写好了你来调”。用 Swagger 或 OpenAPI 自动生成文档,字段类型、必填项、示例值都标清楚。前端开发看到 status 字段是 string 而不是 number,就不会再问“为什么不能用 switch 判断状态”。
文档更新要及时。有一次后端把返回的 data 对象改成嵌套结构,没通知前端,结果 App 崩了一整天,锅还得大家一起背。
上监控和日志审计
接口一上线,就得知道谁在什么时候调了什么。记录请求来源 IP、用户标识、响应状态码。如果有突然大量 401 错误,可能是有人在暴力试密钥;500 错误激增,可能是代码出了问题。
把这些日志接入 ELK 或阿里云日志服务,设个告警规则。半夜三点收到短信提示“/login 接口每分钟失败 200 次”,立马就能反应过来是不是被撞库了。