🌐 ZH

🔑 API密钥生成器

生成安全的随机API密钥。可用于REST API、认证令牌和密钥的生成。

API密钥格式
指南

了解更多

01

1. API密钥安全的重要性

API密钥是应用程序之间认证的核心安全要素。脆弱的密钥容易受到暴力破解攻击,一旦泄露就会导致未经授权的API访问。强API密钥应至少为32个字符以上的随机字符串,并使用加密安全的伪随机数生成器(CSPRNG)。UUID v4、Base64、Hex格式被广泛使用,每个API密钥都必须唯一且不可预测。密钥泄露时应立即废弃并更换为新密钥,切勿将其提交到GitHub等公开代码仓库。

02

2. 密钥生成方式对比

API密钥的生成方式有多种。UUID v4采用122位随机值,冲突概率极低,被广泛使用。Base64将二进制数据编码为文本,32个字符可提供约192位的熵。Hex以十六进制表示,可读性高,64个字符可提供256位的安全强度。字母数字方式仅使用大小写字母和数字,因此对URL安全,添加前缀(sk_、api_)可以更容易识别密钥类型。Stripe、AWS、OpenAI等各自使用独特的密钥格式来区分不同服务的密钥。

03

3. UUID与随机字符串

UUID v4是标准化的128位标识符,保证全球唯一性。采用8-4-4-4-12格式(例如: 550e8400-e29b-41d4-a716-446655440000),结构清晰,遵循RFC 4122标准。而自定义随机字符串可以自由设置长度和格式,更加灵活。UUID适合作为数据库主键,但对于API密钥而言,随机字符串更简洁易用。两者安全强度相近,但随机字符串可以添加前缀和校验和,从而更容易实现验证逻辑。

04

4. 密钥存储建议

API密钥绝不能以明文形式存储。应将其保存在环境变量(.env)中,并添加到.gitignore以排除在版本控制之外。在生产环境中,请使用AWS Secrets Manager、HashiCorp Vault、Azure Key Vault等专用的密钥管理系统。存入数据库时应转换为哈希值(SHA-256),必要时结合加密(AES-256)。不要将密钥硬编码到代码中,应利用Docker secrets或Kubernetes Secrets。对日志中的密钥进行掩码处理以防止泄露,并监控密钥的使用记录。

05

5. 密钥轮换策略

API密钥应定期轮换。每90天更换一次密钥是常见做法,怀疑泄露时应立即废弃。为实现无中断更换,可同时启用两个密钥,切换到新密钥后再停用旧密钥。AWS IAM和Google Cloud API密钥提供自动轮换功能。为每个密钥设置有效期以自动使旧密钥失效,并将轮换记录写入审计日志。使用OAuth 2.0、JWT等基于令牌的认证代替API密钥,可以更安全并支持自动过期。

06

6. 速率限制与使用限制

务必对API密钥应用速率限制以防止滥用。设置诸如每个IP每分钟100次、每个密钥每小时1,000次之类的限制。设置配额以限制每日最大调用次数,超出时返回429 Too Many Requests。配置IP白名单,只允许特定IP使用密钥,并检测异常模式(短时间内大量请求)以自动拦截。使用Cloudflare、Kong、AWS API Gateway等API网关可以轻松实现速率限制。为每个密钥设置权限(作用域),将访问限制为只读、只写等。

常见问题

生成的密钥会发送到服务器吗?
不会。所有密钥仅在浏览器中生成,不会发送到服务器,因此可以安全使用。
我应该选择哪种格式?
通用场景下UUID v4冲突概率低,被广泛使用。如需URL安全请选择字母数字,如需可读性请选择Hex。