请求边界与安全响应
如何限制请求消耗的资源?
- 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 → 认证 → 授权
→ 绑定校验 → 业务规则 → 安全响应与审计