用途:为 Java Spring Boot 服务提供安全审查与实现规范,适用于添加认证、处理输入、创建接口或管理密钥的场景。
主要能力与要点: 认证:优先使用无状态 JWT 或不透明令牌并配合吊销列表;会话使用 httpOnly、Secure、SameSite=Strict Cookie;通过 OncePerRequestFilter 或资源服务器校验令牌。 授权:启用 @EnableMethodSecurity,使用 @PreAuthorize("hasRole('ADMIN')") 或 @PreAuthorize("@authz.canEdit(#id)"),默认拒绝,仅暴露必要权限。 输入校验:控制器使用 @Valid,DTO 上使用 @NotBlank、@Email、@Size 及自定义校验器;渲染前对 HTML 做白名单清洗。 SQL 注入防护:使用 Spring Data 仓库或参数化查询;原生查询用 :param 绑定,禁止字符串拼接。 CSRF:浏览器会话应用保持启用并在表单/请求头携带令牌;纯 Bearer 令牌 API 可禁用 CSRF 并采用无状态会话。 密钥管理:密钥不入源码,从环境变量或 vault 加载;application.yml 不含凭据,使用占位符;定期轮换令牌与数据库凭据。 安全响应头:配置 Content-Security-Policy、frameOptions、xssProtection、referrerPolicy 等。 限流:对高开销接口使用 Bucket4j 或网关级限流,突发时记录告警并返回 429 与重试提示。 依赖安全:在 CI 中运行 OWASP Dependency Check 或 Snyk,保持 Spring Boot 与 Spring Security 受支持版本,已知 CVE 时构建失败。 日志与 PII:不记录密钥、令牌、密码或完整 PAN 数据,脱敏敏感字段,使用结构化 JSON 日志。 文件上传:校验大小、内容类型与扩展名,存储在 Web 根目录之外,必要时扫描。
发布前检查清单:令牌校验与过期正确、敏感路径均有授权守卫、所有输入已校验清洗、无字符串拼接 SQL、CSRF 策略与应用类型匹配、密钥外置且未提交、安全响应头已配置、API 有限流、依赖已扫描且最新、日志无敏感数据。
限制:资料未提供具体版本要求、性能数据、收费信息或完整部署步骤;示例代码仅作示意,实际使用需结合项目情况调整。