[ PROMPT_NODE_27594 ]
api-security-best-practices
[ SKILL_DOCUMENTATION ]
# API 安全最佳实践
## 概述
指导开发人员通过实施身份验证、授权、输入验证、速率限制和针对常见漏洞的防护来构建安全的 API。本技能涵盖了 REST、GraphQL 和 WebSocket API 的安全模式。
## 何时使用此技能
- 设计新的 API 端点时
- 加固现有 API 时
- 实施身份验证和授权时
- 防御 API 攻击(注入、DDoS 等)时
- 进行 API 安全审查时
- 准备安全审计时
- 实施速率限制和流量控制时
- 在 API 中处理敏感数据时
## 工作原理
### 第 1 步:身份验证与授权
我将帮助你实施安全的身份验证:
- 选择身份验证方法(JWT、OAuth 2.0、API 密钥)
- 实施基于令牌的身份验证
- 设置基于角色的访问控制 (RBAC)
- 安全的会话管理
- 实施多因素身份验证 (MFA)
### 第 2 步:输入验证与清理
防御注入攻击:
- 验证所有输入数据
- 清理用户输入
- 使用参数化查询
- 实施请求模式验证
- 防止 SQL 注入、XSS 和命令注入
### 第 3 步:速率限制与流量控制
防止滥用和 DDoS 攻击:
- 实施针对用户/IP 的速率限制
- 设置 API 流量控制
- 配置请求配额
- 优雅地处理速率限制错误
- 监控可疑活动
### 第 4 步:数据保护
保护敏感数据:
- 加密传输中的数据 (HTTPS/TLS)
- 加密静态敏感数据
- 实施正确的错误处理(防止数据泄露)
- 清理错误消息
- 使用安全标头
### 第 5 步:API 安全测试
验证安全实施:
- 测试身份验证和授权
- 执行渗透测试
- 检查常见漏洞 (OWASP API Top 10)
- 验证输入处理
- 测试速率限制
## 示例
### 示例 1:实施 JWT 身份验证
markdown
## 安全的 JWT 身份验证实施
### 身份验证流程
1. 用户使用凭据登录
2. 服务器验证凭据
3. 服务器生成 JWT 令牌
4. 客户端安全存储令牌
5. 客户端在每个请求中发送令牌
6. 服务器验证令牌
### 实施
#### 1. 生成安全的 JWT 令牌
javascript
// auth.js
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
// Login endpoint
app.post('/api/auth/login', async