Skip to content

Security: reevlee/quant-system-31gp

Security

SECURITY.md

🔒 安全指南

敏感信息保护

✅ 已采取的安全措施

  1. 环境变量管理

    • 所有 API 密钥通过环境变量加载
    • 使用 .env 文件存储本地配置(已添加到 .gitignore
  2. 文件忽略

    • .env - 本地配置文件
    • .claude/ - Claude 助手配置
    • *.db - 数据库文件
    • cache/ - 缓存文件
    • 日志文件 (*.log)
  3. Git 保护

    • 敏感文件已从 Git 历史中移除
    • .gitignore 配置完整

📝 使用说明

1. 首次设置

# 复制配置模板
cp .env.example .env

# 编辑 .env 文件,填入你的 API Token
# 使用你喜欢的编辑器打开 .env
nano .env
#
vim .env

2. 配置 Tushare Token

# 方式一:编辑 .env 文件
TUSHARE_TOKEN=your_actual_token_here

# 方式二:环境变量(临时)
export TUSHARE_TOKEN=your_actual_token_here

# 方式三:shell 会话中(推荐用于测试)
TUSHARE_TOKEN=your_token python3 quant.py data 000001.SZ

3. 验证配置

# 检查环境变量是否正确设置
echo $TUSHARE_TOKEN

# 测试连接
quant-system status

⚠️ 危险操作(不要做)

永远不要:

# ❌ 不要在代码中硬编码 Token
TUSHARE_TOKEN = "123456789abc"  # 危险!

# ❌ 不要提交 .env 文件到 Git
git add .env  # 危险!

# ❌ 不要在 commit 信息中暴露密钥
git commit -m "add token: xxx123"  # 危险!

# ❌ 不要在日志中打印敏感信息
logger.info(f"Token: {token}")  # 危险!

🛡️ 最佳实践

应该做:

# ✅ 使用环境变量
import os
token = os.getenv("TUSHARE_TOKEN")

# ✅ 检查环境变量是否设置
if not token:
    raise ValueError("TUSHARE_TOKEN environment variable not set")

# ✅ 不在日志中暴露完整密钥
logger.info(f"Using Tushare API (token: {token[:10]}...)")  # 只显示前10个字符

# ✅ 在 .gitignore 中忽略所有本地配置

🔐 如果密钥泄露

如果你不小心提交了密钥到 GitHub:

  1. 立即作废旧密钥

    • 登录 Tushare 账户
    • 重新生成新的 API Token
  2. 从 Git 历史中移除

    # 使用 git-filter-branch 或 BFG
    git filter-branch --tree-filter 'rm -f .env' HEAD
    git push origin --force main
  3. 通知维护者

    • 如果是公开项目,通知其他贡献者

📚 相关文档

🤔 常见问题

Q: 为什么要使用环境变量?

A: 环境变量使敏感信息与代码分离,可以安全地在不同环境中配置不同的值。

Q: .env 文件在生产环境中也要用吗?

A: 是的,但在生产环境中应该使用更安全的方式(如密钥管理系统)来管理敏感信息。

Q: 如何在 CI/CD 中安全地使用密钥?

A: 使用 GitHub Secrets 等密钥管理服务。参考:https://docs.github.com/en/actions/security-guides/encrypted-secrets


最后检查清单:

  • .env 文件已添加到 .gitignore
  • .env 文件未被提交到 Git
  • 使用 .env.example 作为配置模板
  • 环境变量正确加载
  • 日志不暴露敏感信息
  • 定期检查 Git 历史中是否有泄露的密钥

There aren’t any published security advisories