mcpField
O
owasp

owasp

github.com/claude-dev-suite安全4658 次安装2 天前更新
代码仓库

关于 owasp

owasp 是面向安全审查与开发的参考技能,依据 OWASP Top 10(2021)整理常见漏洞、控制措施和排查建议。适用于识别代码风险并落实基础防护。

主要功能

  1. 01OWASP Top 10(2021)漏洞参考
  2. 02常见安全控制示例
  3. 03代码审查反模式提示
  4. 04常见问题排查建议

适用场景

  1. 01审查代码中的访问控制和注入风险
  2. 02为密码与登录流程补充防护措施
  3. 03检查安全配置和日志处理

MCP 相关

README 提及可通过 mcp__documentation__fetch_docs 获取 OWASP 深入文档。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill owasp

安装后在 Claude Code 中输入/owasp确认已加载。

详细介绍

OWASP 安全——快速参考

何时使用此技能

  • 识别常见漏洞
  • 实施安全控制
  • 在代码审查中检查安全问题

何时不使用此技能

  • OWASP Top 10:2025 - 使用 owasp-top-10 技能了解最新的 2025 年标准
  • 密钥管理 - 使用 secrets-management 技能处理凭据
  • 供应链安全 - 使用 supply-chain 技能处理依赖项问题
  • JWT/OAuth 安全 - 使用身份验证技能处理特定协议的问题

深入了解:使用 mcp__documentation__fetch_docs 并指定技术:owasp,获取全面的文档。

OWASP Top 10(2021)

A01:访问控制失效
// BAD - Direct object reference
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
    return userRepository.findById(id);
}

// GOOD - Check authorization
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id, Authentication auth) {
    User user = userRepository.findById(id);
    if (!user.getId().equals(auth.getPrincipal().getId())) {
        throw new AccessDeniedException("Not authorized");
    }
    return user;
}
A02:加密失效
// BAD - Weak hashing
String hash = DigestUtils.md5Hex(password);

// GOOD - Strong hashing with salt
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String hash = encoder.encode(password);
A03:注入
// BAD - SQL Injection
String query = "SELECT * FROM users WHERE name = '" + name + "'";

// GOOD - Parameterized query
@Query("SELECT u FROM User u WHERE u.name = :name")
User findByName(@Param("name") String name);
A04:不安全设计
  • 在设计阶段进行威胁建模
  • 在用户故事中纳入安全要求
  • 采用纵深防御架构
A05:安全配置错误
# Spring Security - disable defaults carefully
spring:
  security:
    headers:
      content-security-policy: "default-src 'self'"
      x-frame-options: DENY
      x-content-type-options: nosniff
A06:易受攻击的组件
# Check for vulnerabilities
npm audit
mvn dependency-check:check
pip-audit
A07:身份验证失效
// Implement rate limiting
@RateLimiter(name = "login", fallbackMethod = "loginFallback")
public AuthResponse login(LoginRequest request) {
    // ...
}

// Account lockout
if (failedAttempts >= 5) {
    lockAccount(user);
}
A08:软件完整性
  • 验证依赖项的签名
  • 使用锁定文件(package-lock.json、pom.xml)
  • 保障 CI/CD 流水线安全
A09:日志记录失效
// Log security events
log.info("Login attempt", Map.of(
    "user", username,
    "ip", request.getRemoteAddr(),
    "success", authenticated
));

// DON'T log sensitive data
log.info("Password: {}", password);  // NEVER!
A10:SSRF
// Validate URLs
private boolean isAllowedUrl(String url) {
    URL parsed = new URL(url);
    return allowedHosts.contains(parsed.getHost());
}

安全标头

@Configuration
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) {
        return http
            .headers(headers -> headers
                .contentSecurityPolicy(csp -> csp.policyDirectives("default-src 'self'"))
                .frameOptions(frame -> frame.deny())
                .xssProtection(xss -> xss.disable())
            )
            .build();
    }
}

反模式

反模式不良原因正确做法
未经身份验证直接引用对象IDOR 漏洞(A01)访问前始终验证所有权
使用 MD5/SHA1 存储密码容易破解使用带盐的 bcrypt/argon2
在 SQL 中拼接字符串SQL 注入使用参数化查询/ORM
在生产环境中暴露堆栈跟踪信息泄露仅显示通用错误消息
登录时未进行速率限制暴力破解攻击实施速率限制和账户锁定
在代码中存储密钥凭据泄露使用环境变量/密钥库

快速故障排除

问题可能原因解决方案
有效请求返回 403 ForbiddenCORS 配置错误检查 CORS 配置中的允许来源
会话未持久化SameSite Cookie 问题设置 SameSite=Lax,或在使用 HTTPS 时设置为 None
JWT 令牌被拒绝时钟偏差或令牌已过期添加时钟偏差容差(5min)
文件上传失败CSP 阻止将上传域名添加到 CSP 指令中
API 意外返回 401Authorization 标头缺失或无效检查 Bearer 令牌格式

评论

支持 Markdown