关于 implementing-jwt-signing-and-verification
面向开发者和安全评估人员的 JWT 签名与验证实现技能,覆盖多种签名算法、声明校验和密钥轮换。重点包括防范算法混淆、伪造及重放等常见风险。
主要功能
- 01实现多种算法的 JWT 签名
- 02验证签名与标准声明
- 03校验过期时间和受众
- 04防范算法混淆与 none 攻击
- 05通过 JWK Sets 轮换密钥
- 06构建认证中间件
适用场景
- 01为 Web 应用实现 JWT 身份验证
- 02验证并拒绝被篡改或过期的令牌
- 03为分布式系统配置密钥轮换
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-jwt-signing-and-verification安装后在 Claude Code 中输入/implementing-jwt-signing-and-verification确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
实现 JWT 签名与验证
概述
RFC 7519 中定义的 JSON Web Token(JWT)是一种紧凑、URL 安全的令牌,用于 Web 应用中的身份验证和授权。本技能涵盖使用 HMAC-SHA256、RSA-PSS 和 EdDSA 算法实现安全的 JWT 签名,以及验证、令牌过期、声明校验,以及针对常见 JWT 攻击(算法混淆、none 算法、密钥注入)的防御。
适用场景
- 在环境中部署或配置实现 JWT 签名与验证能力时
- 建立符合合规要求的安全控制措施时
- 为该领域构建或改进安全架构时
- 开展需要此实现的安全评估时
前置条件
- 熟悉密码学概念和工具
- 可访问用于安全执行的测试或实验环境
- 已安装所需依赖的 Python 3.8+
- 任何测试活动均已获得适当授权
目标
- 使用 HS256、RS256、ES256 和 EdDSA 实现 JWT 签名
- 验证 JWT 签名并校验标准声明
- 实现令牌过期、not-before 和受众校验
- 防御算法混淆和 none 算法攻击
- 使用 JWK Set 实现 JWT 密钥轮换
- 构建完整的身份验证中间件
关键概念
JWT 算法
| 算法 | 类型 | 密钥 | 安全级别 |
|---|---|---|---|
| HS256 | 对称(HMAC) | 共享密钥 | 128 位 |
| RS256 | 非对称(RSA) | RSA 密钥对 | 112 位 |
| ES256 | 非对称(ECDSA) | P-256 密钥对 | 128 位 |
| EdDSA | 非对称(Ed25519) | Ed25519 密钥对 | 128 位 |
常见 JWT 攻击
- 算法混淆:从 RS256 切换到 HS256,将公钥用作 HMAC 密钥
- None 算法:设置 alg=none 以绕过签名验证
- 密钥注入:将密钥嵌入 JWK 头部
- 弱密钥:暴力破解较短的 HMAC 密钥
- 令牌重放:在没有过期时间的情况下复用有效令牌
安全注意事项
- 始终根据允许列表校验算法头部
- 生产环境中绝不接受 alg=none
- 分布式系统使用非对称算法(RS256、ES256)
- 设置较短的过期时间(访问令牌 15 分钟)
- 实现令牌刷新机制
- 安全存储密钥(不要存放在源代码中)
验证标准
- JWT 签名对所有算法均能生成有效令牌
- 签名验证会拒绝被篡改的令牌
- 过期令牌会被拒绝
- 算法混淆攻击已被阻止
- None 算法会被拒绝
- JWK 密钥轮换正常工作
- 声明校验会强制要求所有必需的声明
评论
支持 Markdown