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

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、或回答「这块后端是否安全」时,按下列清单逐项核对,并结合代码证据给出结论。

工作流

  1. 划定范围:列出涉及的 HTTP 路由 / RPC / 定时任务 / 消息消费者、数据库访问、子进程/Shell、文件读写与上传下载。
  2. 对照清单:对每一项标记 已满足 / ⚠️ 部分满足 / 缺失或风险,并附文件与行号或关键代码片段。
  3. 结论:按严重度汇总(阻断上线 / 建议修复 / 可选加固),避免泛泛而谈。

输出格式(推荐)

## 后端安全审计摘要
- 范围:[模块/服务名]
- 总体结论:[通过 / 有条件通过 / 不通过]

### 阻断项
- ...

### 建议项
- ...

### 核对清单
[复制下方对应章节 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。
  • 命令:搜索 execspawn with shell: true、反引号拼接命令。
  • 路径:搜索 path.join 与用户输入、fs.readFile 与未校验路径。
  • 鉴权:从路由层 middleware 追到 handler,确认资源 ID 与主体绑定。
  • 上传:找 multer/formidable 等配置与存储路径、CDN 回源策略。

附加资源(按需阅读)

  • 框架专项细节(Express/Fastify/Nest/Spring 等)以官方安全指南为准;本 skill 不绑定单一栈。