Skip to content

Security: op7418/NanoBanana-PPT-Skills

Security

SECURITY.md

Git提交安全检查清单

✅ 已配置的安全措施

1. .gitignore 配置 ✓

以下敏感文件和目录已被正确忽略,不会被提交到GitHub

✓ .env                  # API密钥配置文件
✓ venv/                 # Python虚拟环境
✓ outputs/              # 生成的PPT图片
✓ *.key, *.pem          # 其他密钥文件
✓ .DS_Store             # macOS系统文件
✓ __pycache__/          # Python缓存
✓ test_*.json           # 测试文件

2. 安全的环境变量管理 ✓

之前的问题(已修复)

  • run.sh 中硬编码了API密钥

当前方案

  • ✅ API密钥存储在 .env 文件中
  • .env 已添加到 .gitignore
  • run.sh.env 文件读取密钥
  • ✅ 提供 .env.example 作为配置模板

3. 会被提交的文件清单 ✓

以下文件是安全的,可以提交到GitHub:

✓ .env.example          # 环境变量模板(不含真实密钥)
✓ .gitignore            # Git忽略规则
✓ README.md             # 项目说明
✓ QUICKSTART.md         # 快速开始指南
✓ SETUP_COMPLETE.md     # 配置完成说明
✓ generate_ppt.py       # Python生成脚本
✓ ppt-generator.md      # Skill定义
✓ run.sh                # 启动脚本(已修复,不含密钥)
✓ styles/*.md           # 风格定义文件
✓ templates/*.html      # HTML模板

🔒 提交前安全检查步骤

步骤1: 验证敏感文件被忽略

# 检查 .env 是否被忽略
git check-ignore -v .env
# 应输出: .gitignore:15:.env	.env

# 检查哪些文件会被提交(模拟)
git add -n .
# 确认列表中没有 .env 文件

步骤2: 搜索代码中的密钥

# 搜索可能的API密钥
grep -r "AIzaSy" --exclude-dir=.git --exclude-dir=venv --exclude-dir=outputs .

# 如果只在 .env 中找到,说明安全 ✓
# 如果在其他文件中找到,需要删除 ✗

步骤3: 检查Git历史

# 如果您之前有提交,检查历史中是否包含密钥
git log --all --full-history --source -- .env

# 如果有输出,说明 .env 曾被提交,需要清理历史

📋 安全的Git工作流

首次提交

# 1. 初始化Git仓库(如果还没有)
git init

# 2. 验证 .gitignore 正常工作
git status
# 确认 .env、venv/、outputs/ 不在列表中

# 3. 添加所有安全文件
git add .

# 4. 再次检查暂存区
git status
# 确认没有敏感文件

# 5. 提交
git commit -m "Initial commit: PPT Generator"

# 6. 关联远程仓库
git remote add origin https://github.com/你的用户名/ppt-generator.git

# 7. 推送
git push -u origin main

日常提交

# 1. 查看改动
git status

# 2. 添加文件
git add .

# 3. 提交
git commit -m "描述您的改动"

# 4. 推送
git push

🚨 如果密钥已经被提交

紧急处理步骤

如果您不小心提交了包含密钥的文件,请立即:

1. 立即撤销密钥

# 访问 https://makersuite.google.com/app/apikey
# 删除或重新生成API密钥

2. 从Git历史中删除敏感信息

# 使用 git filter-branch 或 BFG Repo-Cleaner
# 删除历史记录中的敏感文件

# 简单方法(会重写所有历史)
git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch .env" \
  --prune-empty --tag-name-filter cat -- --all

# 强制推送(慎用!)
git push origin --force --all

3. 通知GitHub

# 如果仓库是公开的,考虑删除整个仓库重新创建
# 或者使用GitHub的密钥扫描功能检测

✅ 安全检查清单总结

提交到GitHub前,确认以下所有项目:

  • .env 文件在 .gitignore
  • run.sh 不包含硬编码的密钥
  • 运行 git status 确认没有敏感文件
  • 运行 grep -r "AIzaSy" . 确认密钥只在 .env
  • .env.example 只包含模板,不包含真实密钥
  • outputs/ 目录被忽略(避免提交大量图片)
  • venv/ 目录被忽略(避免提交依赖包)

📝 .env.example 使用说明

给其他协作者的说明

  1. 克隆仓库后,复制 .env.example.env

    cp .env.example .env
  2. 编辑 .env,填入自己的API密钥:

    GEMINI_API_KEY=你的实际密钥
  3. .env 文件会被Git忽略,不用担心提交

🔐 最佳实践

DO ✓

  • ✓ 使用 .env 文件存储密钥
  • ✓ 将 .env 添加到 .gitignore
  • ✓ 提供 .env.example 作为模板
  • ✓ 定期轮换API密钥
  • ✓ 使用环境变量而非硬编码
  • ✓ 提交前运行 git status 检查

DON'T ✗

  • ✗ 在代码中硬编码密钥
  • ✗ 将 .env 提交到Git
  • ✗ 在公共仓库中存储密钥
  • ✗ 在 README 中包含真实密钥
  • ✗ 通过邮件或聊天发送密钥
  • ✗ 使用同一密钥在多个项目

🛡️ 额外安全建议

  1. 使用GitHub Secrets(如果使用GitHub Actions)

    • 在仓库设置中添加密钥
    • 在工作流中通过 ${{ secrets.GEMINI_API_KEY }} 使用
  2. 限制API密钥权限

    • 只授予必要的API权限
    • 设置API配额限制
  3. 监控API使用

    • 定期检查API使用情况
    • 发现异常立即撤销密钥
  4. 使用密钥管理服务(生产环境)

    • AWS Secrets Manager
    • HashiCorp Vault
    • Azure Key Vault

当前状态: ✅ 您的项目已正确配置,可以安全提交到GitHub!

There aren't any published security advisories