安全与风控
生产环境 REST API 安全加固:认证、限流…
为生产 REST API 叠加多层安全防护,防御注入、暴力破解、CORS 与常见漏洞。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
生产环境 REST API 安全加固:认通用
解决思路
- 在 Express 中搭建安全中间件栈:引入 helmet、express-rate-limit、express-mongo-sanitize,并依次 app.use(helmet())、app.use(mongoSanitize())。
- 输入清洗不要使用已废弃的 xss-clean 包(2018 年起无人维护,其 README 也建议迁移),改用 xss-prevention 技能中的方案。
- 对 /api/ 路径启用全局限流:rateLimit({ windowMs: 15 * 60 * 1000, max: 100 })。
- 对 /api/auth/ 路径启用更严格的认证限流:rateLimit({ windowMs: 15 * 60 * 1000, max: 5 })。
- 使用 express-validator 做输入校验:body('email').isEmail().normalizeEmail(),body('password').isLength({ min: 8 }).matches(/[A-Z]/).matches(/[0-9]/)。
- express-validator v7+ 已移除内置 .escape() 清洗器,改用 customSanitizer 配合 escape-html 做 HTML 转义,例如 body('name').trim().isLength({ max: 100 }).customSanitizer(v => escapeHtml(v))。
- 在路由处理中用 validationResult(req) 收集错误,若有错误则返回 res.status(400).json({ errors: errors.array() }),否则继续处理请求。
- 通过中间件设置安全响应头:Content-Security-Policy 为 default-src 'self',X-Frame-Options 为 DENY,X-Content-Type-Options 为 nosniff,Strict-Transport-Security 为 max-age=31536000; includeSubDomains,X-XSS-Protection 为 1; mode=block。
- 按安全清单逐项核查:全站 HTTPS、所有受保护路由启用认证、输入校验与清洗、启用限流、配置安全响应头、CORS 限制为白名单来源、生产错误不返回堆栈信息、启用审计日志、定期更新依赖。
- 参考 references/python-nginx.md 实现 Python FastAPI 安全中间件、带密码规则的 Pydantic 输入校验、Nginx SSL/TLS 与安全响应头配置,以及 HTTP 参数污染(HPP)防护。
- 严禁:未校验就信任用户输入、生产环境返回详细错误、把密钥写进代码、用 GET 执行改变状态的操作、为图方便关闭安全措施。
适用边界 · 注意事项
- 非 REST API 或非 Express/FastAPI/Nginx 技术栈时,示例代码需按框架改写后再用。
- 本地一次性原型或离线脚本,无需暴露公网时,全套加固成本过高。
- 已有成熟 API 网关/WAF 统一处理认证、限流与响应头时,避免重复叠加造成冲突。