硬编码机密(代码中的密钥)
硬编码机密(代码中的密钥) 是什么?
硬编码机密(代码中的密钥)把凭据、API 密钥、令牌或密码学材料直接写入源代码、配置文件或容器镜像中,极易被发现并被滥用。
硬编码机密是现代开发中最常见、危害也最严重的错误之一。它们会进入 Git 历史、容器分层、移动应用、CI 日志、公开仓库,被机器人在数分钟内扫描发现。真实案例包括把 AWS 密钥提交到 GitHub、把 Slack 令牌打进前端 bundle、把数据库密码写入 Docker 镜像等。缓解措施组合了:预防(开发者教育、pre-commit 钩子、IDE 插件、.gitignore 模式)、检测(GitHub secret scanning、Gitleaks、TruffleHog 等在仓库和 CI 中扫描)、集中化的机密管理(HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、GCP Secret Manager、Kubernetes External Secrets)。一旦发现泄露,应立即轮换密钥,而不是仅从历史记录中删除。
● 示例
- 01
AWS 访问密钥被提交到公共 GitHub 仓库,在几分钟内即被滥用。
- 02
OAuth 客户端密钥被写入移动应用的二进制文件中。
● 常见问题
硬编码机密(代码中的密钥) 是什么?
把凭据、API 密钥、令牌或密码学材料直接写入源代码、配置文件或容器镜像中,极易被发现并被滥用。 它属于网络安全的 应用安全 分类。
硬编码机密(代码中的密钥) 是什么意思?
把凭据、API 密钥、令牌或密码学材料直接写入源代码、配置文件或容器镜像中,极易被发现并被滥用。
硬编码机密(代码中的密钥) 是如何工作的?
硬编码机密是现代开发中最常见、危害也最严重的错误之一。它们会进入 Git 历史、容器分层、移动应用、CI 日志、公开仓库,被机器人在数分钟内扫描发现。真实案例包括把 AWS 密钥提交到 GitHub、把 Slack 令牌打进前端 bundle、把数据库密码写入 Docker 镜像等。缓解措施组合了:预防(开发者教育、pre-commit 钩子、IDE 插件、.gitignore 模式)、检测(GitHub secret scanning、Gitleaks、TruffleHog 等在仓库和 CI 中扫描)、集中化的机密管理(HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、GCP Secret Manager、Kubernetes External Secrets)。一旦发现泄露,应立即轮换密钥,而不是仅从历史记录中删除。
如何防御 硬编码机密(代码中的密钥)?
针对 硬编码机密(代码中的密钥) 的防御通常结合技术控制与运营实践,详见上方完整定义。
硬编码机密(代码中的密钥) 还有哪些其他名称?
常见的别称包括: 硬编码凭据, 代码中的机密泄露。
● 相关术语
- identity-access№ 233
凭据保险库
集中化且可审计的服务,用于安全存储、轮换并代理对密码、API 密钥、证书和 SSH 密钥等机密的访问。
- appsec№ 982
安全编码
在编写源代码时遵循防御性模式、语言特定规则与公认指南,以最大程度减少安全缺陷的实践。
- appsec№ 166
CI/CD 安全
保护持续集成与持续交付流水线,防止其被入侵、被注入恶意代码、机密泄露与未授权部署的一整套控制。
- appsec№ 1069
软件供应链安全
保护软件生产链中每一个环节——源代码、依赖、构建、签名、分发与部署——使其免受篡改、恶意代码与完整性破坏的学科。
- appsec№ 444
GitOps 安全
针对 GitOps 工作流的安全实践:基础设施与应用的声明式期望状态保存在 Git 中,由自动化控制器持续与生产环境进行对账。
- compliance№ 781
OWASP Top 10
OWASP 发布的安全意识文件,列出 Web 应用最关键的安全风险,基于真实漏洞数据定期更新。
● 参见
- № 277数据外泄
- № 051API 密钥(API Key)