SuperAPI AI 工具集

security-audit

安全与审计

查看项目

更新于 10-15 13:55

技能介绍

Security Audit Skill 是一个面向 Java 应用的安全检查清单技能,依据 OWASP Top 10 与安全编码实践整理,帮助在代码审查与发布前发现常见安全问题。它适用于 Spring、Quarkus、Jakarta EE 以及纯 Java 项目。

一、适用时机

  • 安全代码审查
  • 生产发布之前
  • 用户询问“security”“vulnerability”“OWASP”相关内容
  • 审查认证/授权代码
  • 检查注入类漏洞

二、OWASP Top 10 快速参考 技能给出风险与 Java 缓解措施的对应关系:

  • A01 访问控制失效:基于角色的检查,默认拒绝
  • A02 加密失败:使用强算法,不硬编码密钥
  • A03 注入:参数化查询,输入校验
  • A04 不安全设计:威胁建模,安全默认值
  • A05 安全配置错误:关闭调试,配置安全响应头
  • A06 易受攻击的组件:依赖扫描与更新
  • A07 认证失败:强密码、MFA、会话管理
  • A08 数据完整性失败:验证签名,安全反序列化
  • A09 日志失败:记录安全事件,不记录敏感数据
  • A10 SSRF:校验 URL,域名允许列表

三、输入校验 技能推荐在边界处使用 Bean Validation(JSR 380),可在 Spring、Quarkus、Jakarta EE 及独立环境使用。示例通过 @NotNull、@Size、@Pattern、@Email、@Min、@Max 等注解约束用户名、邮箱、密码、年龄等字段,并在控制器/资源方法上用 @Valid 触发校验。还介绍了自定义校验注解(如 @SafeHtml)与校验器实现,用于检测危险 HTML 模式。 技能强调允许列表优于阻止列表:阻止列表容易被绕过,允许列表只放行已知安全格式。

四、SQL 注入防护

  • JPA/Hibernate:使用参数化查询、Criteria API、命名参数;禁止字符串拼接 JPQL。
  • 原生查询:使用参数化原生查询;禁止拼接原生 SQL。
  • JDBC:使用 PreparedStatement 与占位符;禁止用 Statement 拼接执行。

五、XSS 防护

  • 输出编码:使用模板引擎的自动转义(如 Thymeleaf 默认转义);需要展示 HTML 时谨慎使用 th:utext,仅限可信内容。
  • 手动编码:可使用 OWASP Encoder 的 Encode.forHtml、forJavaScript、forUriComponent,并给出 Maven 依赖坐标。
  • 内容安全策略(CSP):通过 Spring Boot 配置或 Servlet Filter 添加 CSP 响应头,防止内联脚本。

六、CSRF 防护

  • Spring Security:浏览器客户端默认启用 CSRF;无状态 JWT 的 REST API 可禁用;基于会话的浏览器应用应保持启用,并给出 CookieCsrfTokenRepository 配置。
  • Quarkus:通过 application.properties 配置 quarkus.http.csrf.enabled 与 cookie 名称。

七、认证与授权

  • 密码存储:推荐 BCrypt 或 Argon2;禁止使用无盐 MD5、SHA1、SHA256 存储密码。
  • 授权检查:应在服务层检查授权,而非仅依赖控制器层并信任用户输入;给出文档访问的授权判断示例。
  • Spring Security 注解:@PreAuthorize 支持角色检查、本人数据检查以及调用自定义授权服务。

八、密钥管理

  • 禁止硬编码密钥;使用环境变量、外部配置或密钥管理服务。
  • 配置文件中引用环境变量,而非明文写入。
  • .gitignore 中排除 .env、.pem、.key、credentials、secret、application-local.yml 等。

九、安全反序列化

  • 避免 Java 原生序列化(ObjectInputStream 存在远程代码执行风险)。
  • 推荐使用 Jackson 处理 JSON,并谨慎处理多态类型;给出安全配置示例,包括关闭默认类型信息以防范 gadget 攻击。

十、依赖安全

  • OWASP Dependency Check:提供 Maven 插件配置,可设置 failBuildOnCVSS 阈值,运行 mvn dependency-check:check 并生成报告。
  • 保持依赖更新:使用 mvn versions:display-dependency-updates 与 mvn versions:use-latest-releases。

十一、安全响应头 推荐响应头包括 Content-Security-Policy、X-Content-Type-Options、X-Frame-Options、Strict-Transport-Security、X-XSS-Protection,并给出 Spring Boot 配置示例。

十二、安全日志 应记录登录成功、登录失败、访问拒绝、认证失败等安全事件;禁止记录密码、含信用卡的请求体等敏感数据。

十三、安全检查清单

  • 代码审查:输入允许列表校验、SQL 参数化、按上下文输出编码、服务层授权检查、无硬编码密钥、BCrypt/Argon2 哈希密码、不记录敏感数据、浏览器应用启用 CSRF。
  • 配置:强制 HTTPS、配置安全响应头、生产环境关闭调试/开发功能、修改默认凭据、错误信息不泄露内部细节。
  • 依赖:无已知漏洞(OWASP 检查)、依赖保持更新、移除不必要依赖。

十四、相关技能 java-code-review(通用代码审查)、maven-dependency-audit(依赖漏洞扫描)、logging-patterns(安全日志实践)。

限制:该技能为检查清单与示例集合,具体项目需结合自身框架版本与配置调整;资料未提供自动化扫描以外的运行时防护或具体工具集成细节。