关于 security-checklist
security-checklist 是供 AI 编码助手遵循的代码安全指南,适用于生成或修改代码的开发流程。它重点规范凭据存储、环境变量验证、前端令牌处理和提交前审查。
主要功能
- 01列出不应提交的环境文件与忽略规则
- 02要求避免在代码中硬编码密钥
- 03指导使用 AWS Secrets Manager 和 SSM 存储敏感值
- 04规范前端令牌使用与环境变量校验
- 05提供提交前安全审查清单
适用场景
- 01编写或修改涉及凭据的代码
- 02提交代码前检查密钥和环境文件
- 03为应用配置必需环境变量校验
- 04审查前端是否暴露敏感令牌
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ loxosceles-dev/ dev-skills --skill security-checklist安装后在 Claude Code 中输入/security-checklist确认已加载。
详细介绍
AI 编码助手安全检查清单
这是严格的指南。 请严格遵守以下规则。
生成或修改代码时必须遵守的关键安全规则。
切勿提交以下文件
包含实际值的环境文件:
.env
.env.local
.env.development
.env.production
.env.test
.env.*
始终提交模板(不包含实际值):
.env_TEMPLATE
.env.example
必需的 gitignore 模式:
# Environment files
.env
.env.*
!.env_TEMPLATE
!.env.example
# AWS credentials
.aws/credentials
.aws/config
# SSH keys
*.pem
id_rsa
id_ed25519
切勿硬编码机密
❌ 切勿这样做:
const apiKey = 'sk-1234567890abcdef';
const dbPassword = 'mypassword123';
const awsAccessKey = 'AKIAIOSFODNN7EXAMPLE';
✅ 始终这样做:
// Runtime: Load from environment
const apiKey = process.env.API_KEY;
if (!apiKey) throw new Error('API_KEY not set');
// Infrastructure: Reference from Secrets Manager/SSM
const secret = secretsmanager.Secret.fromSecretNameV2(
this, 'ApiKey',
'/project/prod/api-key'
);
机密存储
使用适当的 AWS 服务:
- Secrets Manager:密码、API 密钥、数据库凭证、令牌
- SSM Parameter Store (SecureString):敏感配置值
- SSM Parameter Store (String):非敏感配置
切勿:
- 在代码中硬编码机密
- 将机密提交到 git
- 将机密记录到控制台/CloudWatch
- 在 URL 或查询参数中传递机密
前端令牌处理
❌ 切勿暴露敏感令牌:
// Don't put backend API keys in frontend code
const token = 'secret-backend-token';
✅ 使用适当的身份验证方法:
// Use public API keys or user-specific tokens
const publicKey = process.env.NEXT_PUBLIC_API_KEY; // Public, safe to expose
const userToken = cookies.get('auth-token'); // User-specific, from auth flow
环境变量验证
始终验证必需的机密是否存在:
// At application startup
const required = ['DATABASE_URL', 'API_KEY', 'JWT_SECRET'];
const missing = required.filter(key => !process.env[key]);
if (missing.length > 0) {
throw new Error(`Missing required secrets: ${missing.join(', ')}`);
}
代码审查清单
提交前,请确认:
- 没有硬编码的密码、API 密钥或令牌
- 没有包含实际值的
.env文件 - Gitignore 包含所有机密文件模式
- 启动时验证环境变量
- 基础设施中的机密从 Secrets Manager/SSM 加载
-
console.log或错误消息中没有机密 - 前端仅使用公开的 API 密钥或特定于用户的令牌
有疑问时
遇到以下情况时,请停止并询问:
- 你准备提交的文件内容中包含“key”、“secret”、“password”或“token”
- 你正在硬编码任何凭证或敏感值
- 你不确定某个值应该放入 git 还是环境变量
默认采用安全做法:如果不确定某项内容是否敏感,就将其视为机密。
相关内容:
持续改进
如果开发者纠正了本技能本应阻止的行为,请提出对本技能的具体修订建议,以避免今后出现相同的纠正。
评论
支持 Markdown