mcpField
S
security-checklist

security-checklist

github.com/loxosceles-dev安全137 次安装
代码仓库

关于 security-checklist

security-checklist 是供 AI 编码助手遵循的代码安全指南,适用于生成或修改代码的开发流程。它重点规范凭据存储、环境变量验证、前端令牌处理和提交前审查。

主要功能

  1. 01列出不应提交的环境文件与忽略规则
  2. 02要求避免在代码中硬编码密钥
  3. 03指导使用 AWS Secrets Manager 和 SSM 存储敏感值
  4. 04规范前端令牌使用与环境变量校验
  5. 05提供提交前安全审查清单

适用场景

  1. 01编写或修改涉及凭据的代码
  2. 02提交代码前检查密钥和环境文件
  3. 03为应用配置必需环境变量校验
  4. 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