跳到主要内容

请求边界与安全响应

如何限制请求消耗的资源?​

  • body limit: 在解析 JSON、form 或上传前限制总大小;
  • header limit: 限制 Header 尺寸与数量,避免内存放大;
  • upload: 限制单文件、总大小、类型和文件名; 存储时生成内部文件名;
  • timeout: 为读取、业务执行、写出和下游调用分别设置预算;
  • concurrency/rate limit: 在昂贵解析和业务调用前拒绝过载请求;

如何判断代理信息是否可信?​

  • 客户端 IP: 只有请求来自受信反向代理时才解析转发 Header;
  • X-Forwarded-For: 可被直连客户端伪造; 按代理跳数从可信方向解析;
  • scheme/host: 仅信任网关注入的规范 Header,避免重定向和链接污染;

如何设置安全响应头?​

  • HSTS: HTTPS 稳定后要求浏览器只使用 HTTPS;
  • Content-Type-Options: 设置 nosniff;
  • Content-Security-Policy: 限制页面资源和脚本来源;
  • Frame-Options/frame-ancestors: 防止未授权嵌入;
  • Referrer-Policy: 控制跨站 Referer 泄露;
  • Hertz 集成: hertz-contrib/secure 集中设置,按 API 与页面场景调整;

如何保护密码与 Secret?​

  • 密码: 使用专用慢散列算法和随机 salt,不可明文或可逆加密存储;
  • 日志脱敏: Authorization、Cookie、密码、Token 和 DSN 不进入日志;
  • Secret 来源: 环境注入或 Secret Manager; 不放在镜像和仓库;
  • 错误响应: 不返回堆栈、SQL、绝对路径或内部主机名;

如何安排请求防护的执行顺序?​

网络/TLS → 请求大小与速率 → CORS/CSRF → 认证 → 授权
→ 绑定校验 → 业务规则 → 安全响应与审计