API 密钥(API Key)
API 密钥(API Key) 是什么?
API 密钥(API Key)服务签发的静态密文字符串,用于识别和认证调用方,通常通过请求头或查询参数随每次 API 调用发送。
API 密钥是用于在后端 API 上标识项目、服务账号或开发者的长随机字符串。它易于签发与使用,但安全性较弱:它认证的是调用方而非用户,默认不过期,且会授予与之绑定的全部权限。最佳实践:放入密钥管理服务、绝不嵌入客户端代码或公开仓库、对每个密钥实行最小作用域、按 IP 或 Referer 限制、定期轮换、泄露立即吊销。涉及最终用户授权或高价值操作时,优先选择 OAuth 2.0、mTLS 或签名请求。
● 示例
- 01
Authorization: ApiKey sk_live_abc123...
- 02
Stripe、Google Maps、Twilio 等服务使用按项目分发的 API 密钥。
● 常见问题
API 密钥(API Key) 是什么?
服务签发的静态密文字符串,用于识别和认证调用方,通常通过请求头或查询参数随每次 API 调用发送。 它属于网络安全的 身份与访问 分类。
API 密钥(API Key) 是什么意思?
服务签发的静态密文字符串,用于识别和认证调用方,通常通过请求头或查询参数随每次 API 调用发送。
API 密钥(API Key) 是如何工作的?
API 密钥是用于在后端 API 上标识项目、服务账号或开发者的长随机字符串。它易于签发与使用,但安全性较弱:它认证的是调用方而非用户,默认不过期,且会授予与之绑定的全部权限。最佳实践:放入密钥管理服务、绝不嵌入客户端代码或公开仓库、对每个密钥实行最小作用域、按 IP 或 Referer 限制、定期轮换、泄露立即吊销。涉及最终用户授权或高价值操作时,优先选择 OAuth 2.0、mTLS 或签名请求。
如何防御 API 密钥(API Key)?
针对 API 密钥(API Key) 的防御通常结合技术控制与运营实践,详见上方完整定义。
● 相关术语
- appsec№ 459
硬编码机密(代码中的密钥)
把凭据、API 密钥、令牌或密码学材料直接写入源代码、配置文件或容器镜像中,极易被发现并被滥用。
- appsec№ 052
API 安全
围绕 API 的设计、构建与运营,使其在受到攻击时仍能保持身份认证、授权、数据暴露与抗滥用能力的实践。
- identity-access№ 088
Bearer 令牌(持有者令牌)
RFC 6750 定义的不透明或结构化凭据,仅凭持有即可授予对资源的访问权限,不需证明持有者是合法所有者。
- identity-access№ 749
OAuth 2.0
开放的授权框架,允许资源所有者在不共享凭据的情况下,授予第三方应用对 API 的有限范围访问。
- identity-access№ 1011
服务账户
由应用程序、脚本或服务使用的非人类身份,通常用于在没有交互登录的情况下向其他系统进行认证。
- identity-access№ 233
凭据保险库
集中化且可审计的服务,用于安全存储、轮换并代理对密码、API 密钥、证书和 SSH 密钥等机密的访问。