---
title: 接口安全自查清单：参数校验、限流、越权、日志
site: 星湖の小窝
category: 后端
tags: [后端, 安全, 接口]
date: 2026-10-02
updated: 2026-10-02
id: note-api-security-checklist
---

# 接口安全自查清单：参数校验、限流、越权、日志

接口是数据的入口，也是事故最常发生的地方。这份清单给自己写的接口用，全部是防御方向。

### 一、参数校验：不信任任何输入

- 类型、长度、范围都校验，别只在前端做（前端只是给用户体验用的）
- 不要直接把用户输入拼进文件名、SQL、命令里
- 查询参数里出现数组（`?id[]=1`）要能安全处理，而不是报 500
- 所有输出到 HTML 的地方做转义，富文本单独走白名单

### 二、鉴权与越权：最容易被忽略的一条

很多人只验证"登录了吗"，忘了验证"这条数据是不是他的"。改个 ID 就能看别人的订单，这类问题至今仍常见。

```php
// 反例：只判断登录
if (is_login()) { echo get_order($_GET['id']); }

// 正确：数据归属也判断
$order = get_order($_GET['id']);
if (!$order || $order['user_id'] !== current_user_id()) {
    http_response_code(404);
    exit;
}
```

### 三、限流：让接口在被打的时候还能用

- 按 IP、按账号、按接口分别限流（只按 IP 容易误伤共用出口的用户）
- 验证码、登录、发信这类接口单独定更严的阈值
- 返回 429 并带上"多久之后重试"，前端才好提示

### 四、日志：出问题时的唯一证据

- 记录时间、IP、账号、动作、结果，**不记密码和完整令牌**
- 敏感字段脱敏（邮箱打码、长数字打码）
- 日志按天分割并设定保留期，别让它把磁盘写满

### 五、几条小习惯

- 给用户看的错误和写进日志的错误分开 —— 别把数据库报错回给前端
- 接口只允许需要的 HTTP 方法
- 涉及状态的写操作加 CSRF 或同源校验
