Security Hardening 是一份面向应用安全的加固指南,围绕常见 Web 与 API 安全风险给出具体规则、代码示例和检查清单。
用途 该指南用于在开发与部署过程中系统性地落实安全措施,覆盖从输入处理到依赖管理的多个环节,适合作为团队安全编码的参考。
主要能力
- 输入验证:强调在边界处验证所有输入,不信任客户端验证。示例使用 zod 定义 schema,校验类型、长度、格式与范围;建议使用允许列表而非拒绝列表;对文件上传检查 MIME 类型、扩展名与魔术字节;在服务器或代理层限制请求体大小(如最大 1MB)。
- 输出编码:防止 XSS,按上下文编码输出。HTML 上下文使用框架自动转义(React 默认如此),避免对用户输入使用 dangerouslySetInnerHTML;URL 上下文使用 encodeURIComponent;JSON 上下文使用 JSON.stringify。
- SQL 注入防护:禁止字符串拼接 SQL,始终使用参数化查询,或使用 ORM/查询构建器。
- CSRF 防护:服务端生成并校验 CSRF token,对状态变更请求(POST、PUT、PATCH、DELETE)进行中间件校验;对使用 Bearer token 的 API 不需要 CSRF。
- 内容安全策略(CSP):给出示例策略,建议从严格开始按需放宽,使用 nonce 替代 unsafe-inline,通过 report-uri 上报违规,先用 Content-Security-Policy-Report-Only 测试。
- 安全响应头:列出 Strict-Transport-Security、X-Content-Type-Options、X-Frame-Options、Referrer-Policy、Permissions-Policy 等,建议在每个响应中设置,可使用 helmet 等中间件。
- 速率限制:按用户与端点限流,使用滑动窗口算法,计数器存于 Redis,返回 429 与 Retry-After 头,对认证端点施加更严格限制。
- JWT 最佳实践:访问令牌短过期(15 分钟),刷新令牌(7-30 天)存于 httpOnly cookie;微服务用 RS256,单体用 HS256;不在 JWT 载荷存敏感数据;每次请求校验 iss、aud、exp、nbf;通过拒绝列表或短过期加轮换实现令牌撤销。
- 密钥管理:不将密钥提交到版本控制,运行时使用环境变量,生产环境使用密钥管理器(如 AWS Secrets Manager、HashiCorp Vault、Doppler),定期轮换(API 密钥最长 90 天),不同环境使用不同密钥,在 CI 中用 trufflehog、gitleaks、git-secrets 扫描泄露。
- 依赖审计:给出 Node.js(npm audit、better-npm-audit)、Python(pip-audit、safety)、Go(govulncheck)的命令,建议在 CI 中对每个 PR 运行审计,阻止严重/高危漏洞合并,固定依赖版本,每周通过 Dependabot、Renovate 自动更新。
使用方式 该指南以文档形式提供规则与代码片段,开发者可将其作为编码规范参考,在项目中逐项落实,并在部署前对照检查清单核对。
适用场景 适用于 Web 应用与 API 的开发、代码审查、CI 安全门禁配置以及部署前安全检查。
限制 资料未提供该指南的安装命令、具体工具集成方式、收费信息或平台支持范围,相关内容暂未提供。