You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.0 KiB
5.0 KiB
| name | description |
|---|---|
| backend-security-audit | Audits backend APIs and services against input validation, SQL/command injection, path traversal, XSS/CSRF, authentication, authorization, sensitive data, logging, and file upload security. Use when reviewing backend security, hardening APIs, pre-release security checks, or when the user mentions 后端安全、安全审计、注入、越权、上传安全. |
后端安全审计(清单驱动)
何时使用
在审查服务端代码、PR、或回答「这块后端是否安全」时,按下列清单逐项核对,并结合代码证据给出结论。
工作流
- 划定范围:列出涉及的 HTTP 路由 / RPC / 定时任务 / 消息消费者、数据库访问、子进程/Shell、文件读写与上传下载。
- 对照清单:对每一项标记 ✅ 已满足 / ⚠️ 部分满足 / ❌ 缺失或风险,并附文件与行号或关键代码片段。
- 结论:按严重度汇总(阻断上线 / 建议修复 / 可选加固),避免泛泛而谈。
输出格式(推荐)
## 后端安全审计摘要
- 范围:[模块/服务名]
- 总体结论:[通过 / 有条件通过 / 不通过]
### 阻断项
- ...
### 建议项
- ...
### 核对清单
[复制下方对应章节 checklist,逐项填写 ✅⚠️❌ + 证据]
一、输入校验与注入防护
核对时优先看:请求体/Query/Path/Header、ORM 原生 SQL、文件路径、命令行拼接、模板/HTML 输出、跨域与 CSRF 配置。
- 入参校验:所有用户入参严格校验——长度、类型、格式、枚举范围(含空值与边界)。
- SQL 注入:杜绝字符串拼接 SQL;全部使用预编译参数化查询或 ORM 的安全 API。
- 路径穿越:校验文件路径;禁止
../等跳转;尽量使用白名单根目录 +realpath/规范化后比对前缀。 - 命令注入:不将用户可控字符串直接拼进系统命令;若必须调用外部命令,使用固定参数列表并避免 shell。
- XSS:用户内容输出时转义;不将不可信数据直接当作 HTML/JS 插入(含邮件、PDF、富文本)。
- CSRF:关键状态变更接口校验 CSRF Token 或等价机制;CORS 不使用
*搭配 credentials;白名单 Origin。
二、认证与权限安全
- 会话/JWT:合理过期与刷新策略;算法与密钥强度符合当前实践(如避免弱算法/弱密钥)。
- 密钥管理:密钥与敏感配置不硬编码;使用环境变量、密钥管理服务或配置中心,并限制访问面。
- 鉴权覆盖面:业务接口默认需登录;不存在误暴露的调试或管理接口。
- 接口级权限:基于角色/权限或资源级策略;拒绝仅依赖前端隐藏按钮的「假权限」。
- 水平越权:校验资源归属(如
userId必须等于当前主体);列表/详情/更新/删除一致校验。 - 敏感操作:改密、提现、删数据等支持二次验证(密码/OTP/设备确认等)。
- 暴力破解防护:登录、短信、验证码等接口限流、锁定或递增延迟;统一错误信息防枚举。
三、敏感数据安全
- 密码存储:使用 bcrypt/Argon2 等慢哈希;禁止 MD5/SHA1 等作为密码存储方案。
- PII 脱敏:身份证、手机、银行卡等脱敏存储与展示;最小化采集与保留。
- 日志安全:日志不打印密码、完整 Token、密钥、证件号等;结构化日志注意字段过滤。
- 静态加密:核心敏感字段加密存储;密钥集中管理与轮换策略可执行。
- 传输安全:对外全程 HTTPS;敏感信息不在 URL/Referer 中明文传递。
四、文件上传/下载安全
- 类型校验:后缀 + Magic bytes/MIME;不信任客户端
Content-Type单独字段。 - 大小限制:服务端限制单文件与总大小;防止 DoS。
- 文件名:上传后随机命名;不信任用户原始文件名作为存储名或路径分量。
- 存储与执行面:上传目录无执行权限、与应用代码分离;必要时仅通过受控下载接口访问。
- 对象存储:优先对象存储 + 预签名 URL;避免将用户文件放在应用进程可直接执行的路径。
- 恶意文件:禁止可执行脚本/双后缀绕过;对办公文档等按需杀毒或沙箱策略(按业务定级)。
审查技巧(精简)
- SQL:搜索字符串拼接 SQL、
fmt/format拼进查询、$queryRawUnsafe等危险 API。 - 命令:搜索
exec、spawnwithshell: true、反引号拼接命令。 - 路径:搜索
path.join与用户输入、fs.readFile与未校验路径。 - 鉴权:从路由层 middleware 追到 handler,确认资源 ID 与主体绑定。
- 上传:找 multer/formidable 等配置与存储路径、CDN 回源策略。
附加资源(按需阅读)
- 框架专项细节(Express/Fastify/Nest/Spring 等)以官方安全指南为准;本 skill 不绑定单一栈。