springboot-security
Spring Boot 安全开发助手,帮你配置身份认证、权限控制、输入验证、CSRF 防护和密钥管理。提供安全检查清单,确保你的 Java 后端服务在生产环境中安全可靠。
这个技能能帮你做什么
如果你在用 Spring Boot 开发 Java 后端服务,这个技能能帮你做好安全方面的各种事情:
- 身份认证 —— 配置 JWT、OAuth2 或 Session 认证,验证用户身份是否合法
- 权限控制 —— 按角色或权限限制接口访问,确保用户只能访问自己该访问的资源
- 输入验证 —— 校验用户提交的数据,防止恶意输入导致的安全问题
- 密码安全 —— 使用安全的密码哈希算法(如 BCrypt)存储密码,绝不存明文
- 防 SQL 注入 —— 使用参数化查询,避免字符串拼接导致的数据库攻击
- CSRF 防护 —— 针对 Web 应用配置合适的 CSRF 保护策略
- 密钥管理 —— 将数据库密码、API 密钥等敏感信息放到环境变量或 Vault 中管理
- 安全响应头 —— 配置 CSP、XSS 防护等 HTTP 响应头,增强浏览器端安全
- 跨域控制 —— 合理配置 CORS,限制哪些网站可以访问你的接口
- 接口限流 —— 防止接口被过度调用,保护系统不被刷爆
- 依赖安全 —— 检查项目依赖是否有已知漏洞,及时更新修复
什么时候用
- 新项目上线的安全审查 —— 确保所有接口都有认证和授权保护
- 添加用户认证 —— 需要登录、注册、权限管理功能时
- 处理用户输入 —— 接收用户提交的数据时,防止注入攻击
- 配置生产环境 —— 部署前检查安全配置是否到位
- 安全漏洞修复 —— 发现安全问题后,按照最佳实践修复
- 代码审查 —— 审查代码中可能存在的安全隐患
主要覆盖哪些场景
- 身份认证 —— JWT Token 验证、OAuth2 集成、Session 管理
- 权限授权 —— 基于角色的访问控制、方法级安全注解
- 输入验证 —— Bean Validation、自定义校验器、数据清洗
- 密码安全 —— 密码哈希、密码强度要求
- SQL 注入防护 —— 参数化查询、Repository 安全使用
- CSRF 保护 —— 针对不同应用类型的 CSRF 策略配置
- 密钥管理 —— 环境变量、Vault 集成、密钥轮换
- 安全响应头 —— CSP、XSS、Frame 选项等安全头部配置
- CORS 配置 —— 跨域资源共享的安全配置
- 限流防护 —— 接口调用频率限制,防止暴力破解
- 依赖安全 —— 漏洞扫描、依赖更新管理
- 日志安全 —— 避免在日志中记录敏感信息
怎么用
在 Spring Boot 安全开发中遇到以下情况,都可以询问这个技能:
- "怎么配置 JWT 认证?"
- "接口怎么添加权限控制?"
- "用户输入怎么安全校验?"
- "密码怎么安全存储?"
- "CSRF 应该怎么配置?"
- "密钥怎么管理比较安全?"
- "CORS 怎么配置才安全?"
- "接口限流怎么做?"
- "上线前要检查哪些安全项?"
核心原则
- 默认拒绝 —— 没有明确授权的接口默认不允许访问
- 最小权限 —— 只给用户执行操作所需的最小权限
- 验证一切输入 —— 不信任任何来自用户的数据,全部校验和清洗
- 安全默认配置 —— 使用安全的默认设置,避免不安全默认值
- 密钥不外泄 —— 密码、Token、API 密钥绝不放在代码里
- 安全即设计 —— 安全不是后期补丁,而是设计时就要考虑
适用场景
适合的情况:
- 用 Spring Boot 开发需要提供认证和授权的后端服务
- 需要保护 API 接口不被未授权访问
- 需要处理用户注册、登录、权限管理
- 需要防范常见的 Web 安全攻击(注入、XSS、CSRF 等)
- 需要符合安全合规要求的项目
- 上线前需要进行安全审查
不适合的情况:
- 完全公开、不需要任何保护的接口
- 非 Java/Spring Boot 技术栈的项目
- 纯内部工具且不需要认证
- 已经由网关或反向代理统一处理安全的场景(但仍建议了解)
v1.0.0
2026-07-17
下载