Agent skill
springboot-security
Spring Boot 服务的 Spring Security 身份验证/授权、验证、CSRF、密钥、响应头、速率限制和依赖项安全最佳实践。
Install this agent skill to your Project
npx add-skill https://github.com/xu-xiang/everything-claude-code-zh/tree/main/docs/ja-JP/skills/springboot-security
SKILL.md
Spring Boot 安全审查
在添加身份验证、处理输入、创建端点或处理敏感密钥时使用。
身份验证(Authentication)
- 优先使用无状态 JWT 或带有吊销列表的不透明令牌(Opaque Token)
- 对于会话,使用
httpOnly、Secure、SameSite=Strict的 Cookie - 在
OncePerRequestFilter或资源服务器中验证令牌
@Component
public class JwtAuthFilter extends OncePerRequestFilter {
private final JwtService jwtService;
public JwtAuthFilter(JwtService jwtService) {
this.jwtService = jwtService;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain chain) throws ServletException, IOException {
String header = request.getHeader(HttpHeaders.AUTHORIZATION);
if (header != null && header.startsWith("Bearer ")) {
String token = header.substring(7);
Authentication auth = jwtService.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(auth);
}
chain.doFilter(request, response);
}
}
授权(Authorization)
- 启用方法级安全:
@EnableMethodSecurity - 使用
@PreAuthorize("hasRole('ADMIN')")或@PreAuthorize("@authz.canEdit(#id)") - 默认拒绝访问,仅公开必要的范围(Scope)
输入验证(Input Validation)
- 在控制器中使用
@Valid进行 Bean Validation - 在 DTO 上应用约束:
@NotBlank、@Email、@Size以及自定义校验器 - 在渲染前使用白名单对 HTML 进行清理(Sanitize)
SQL 注入防护
- 使用 Spring Data Repository 或参数化查询
- 原生查询使用
:param绑定,禁止字符串拼接
CSRF 防护
- 对于浏览器会话应用,启用 CSRF 并在表单/响应头中包含令牌
- 对于使用 Bearer 令牌的纯 API 应用,禁用 CSRF 并依赖无状态身份验证
http
.csrf(csrf -> csrf.disable())
.sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
密钥管理(Secrets Management)
- 禁止在源码中包含密钥。从环境变量或 Vault 加载
- 确保
application.yml中不含凭据,使用占位符代替 - 定期轮换令牌和数据库凭证
安全响应头(Security Headers)
http
.headers(headers -> headers
.contentSecurityPolicy(csp -> csp
.policyDirectives("default-src 'self'"))
.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)
.xssProtection(Customizer.withDefaults())
.referrerPolicy(rp -> rp.policy(ReferrerPolicyHeaderWriter.ReferrerPolicy.NO_REFERRER)));
速率限制(Rate Limiting)
- 对高成本端点应用 Bucket4j 或网关级限制
- 记录突发流量日志并发送告警,返回带有重试提示的 429 状态码
依赖项安全(Dependency Security)
- 在 CI 中运行 OWASP Dependency Check / Snyk
- 保持 Spring Boot 和 Spring Security 处于受支持的版本
- 针对已知的 CVE 漏洞使构建失败
日志与 PII(个人识别信息)
- 禁止在日志中记录密钥、令牌、密码或完整的银行卡号(PAN)数据
- 脱敏敏感字段,并使用结构化 JSON 日志
文件上传
- 验证文件大小、内容类型(Content-Type)和扩展名
- 存储在 Web 根目录之外,并根据需要进行扫描
发布前检查清单
- 身份验证令牌已正确验证且未过期
- 所有敏感路径都有授权保护(Authorization Guard)
- 所有输入已验证并清理
- 没有通过字符串拼接的 SQL 语句
- 针对应用类型采用了正确的 CSRF 对策
- 密钥已外部化,未提交至仓库
- 已配置安全响应头
- API 设有速率限制
- 依赖项已扫描且为最新版本
- 日志中不含敏感数据
注意:默认拒绝(Default Deny)、验证输入、应用最小权限原则,并优先采用“配置即安全”的实践。
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
investor-materials
创建并更新路演 PPT (Pitch Deck)、单页简介 (One-Pager)、投资者备忘录 (Investor Memo)、加速器申请、财务模型以及融资材料。当用户需要面向投资者的文档、预测、资金用途表、里程碑计划或需要跨多个融资资产保持内部一致性的材料时,请使用此技能。
e2e-testing
Playwright E2E 测试模式、页面对象模型(POM)、配置、CI/CD 集成、产物管理以及不稳定测试(flaky test)策略。
api-design
生产级 API 的 REST API 设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和速率限制。
frontend-patterns
React、Next.js、状态管理(State Management)、性能优化(Performance Optimization)及 UI 最佳实践的前端开发模式。
investor-outreach
Draft cold emails, warm intro blurbs, follow-ups, update emails, and investor communications for fundraising. Use when the user wants outreach to angels, VCs, strategic investors, or accelerators and needs concise, personalized, investor-facing messaging.
verification-loop
为 Claude Code 会话提供的全面验证系统。
Didn't find tool you were looking for?