解决GitHub项目泄露API密钥问题

文章目录

  • 所有的步骤参考gpt
  • 步骤一 使用环境变量
  • 步骤二 撤销并移除历史中的API密钥
    • (1) 安装: pip install git-filter-repo
    • (2) 清除特定文件 git filter-repo --path PATH_TO_YOUR_FILE --invert-paths
      • 出错
      • 解决
  • 步骤三 处理移除的 origin 远程
  • 步骤四 强制推送到GitHub
  • 步骤五 重新生成通义千问API密钥

前言:这两天有一个项目调用了通义千问API,但是api-key忘记存到环境变量里面了,后面使用环境变量时才想到有可能泄露了API。而且我推测下面这个邮件就是在提醒我。

,

所有的步骤参考gpt

步骤一 使用环境变量

将API密钥和baseURL存储在环境变量中,并且不要将这些信息上传到GitHub。
因为我的项目是vite+react,所以新建文件夹.env.local

VITE_API_KEY='xxxxxxxxxxxxx'
VITE_BASE_URL='xxxxxxxxxxxxxxxxxxxxxxxx'

如果项目要使用的话:

const apiKey = import.meta.env.VITE_API_KEY;
const baseURL = import.meta.env.VITE_BASE_URL;

然后在 .gitignore文件中添加

.env.local

步骤二 撤销并移除历史中的API密钥

即使删除了提交,API密钥仍然存在于Git的历史记录中。因此,需要从历史中移除它

(1) 安装: pip install git-filter-repo

在这里插入图片描述

(2) 清除特定文件 git filter-repo --path PATH_TO_YOUR_FILE --invert-paths

因为我的密钥直接在App.jsx中使用了,所以我要删除我这个文件App.jsx的历史
git filter-repo --path src/App.jsx --invert-paths

在这里插入图片描述

出错

$ git filter-repo --path src/App.jsx --invert-paths
Aborting: Refusing to destructively overwrite repo history since
this does not look like a fresh clone.
  (expected freshly packed repo)
Please operate on a fresh clone instead.  If you want to proceed
anyway, use --force.

这个错误信息是因为 git filter-repo 认为当前的仓库不是一个"干净的克隆"(例如,仓库中可能有未提交的更改、未提交的文件、或者其他复杂的Git历史记录)。为了安全和保证没有未预期的修改,它建议在一个新的、干净的克隆仓库中执行此操作。

解决

在一个新的、干净的克隆仓库中执行 git filter-repo,以确保安全地重写历史。以下是详细步骤:
1 克隆仓库到新的目录

git clone https://github.com/username/repository.git
cd repository

2 运行 git filter-repo

git filter-repo --path src/App.jsx --invert-paths

成功
在这里插入图片描述
具体来说,git filter-repo 重写了Git历史,并且删除了所有过去版本中包含 src/App.jsx 的提交。输出中提到的以下几点意味着成功:
Parsed 7 commits:表示重新处理了7个提交历史,表明git filter-repo已经重新写了提交历史。
New history written in 7.25 seconds:表示新的Git历史已经成功写入。
Repacking your repo and cleaning out old unneeded objects:表示Git库中的无用对象和历史被清理,确保删除的敏感信息不会再出现在历史中。

步骤三 处理移除的 origin 远程

上一步中,在git filter-repo --path src/App.jsx --invert-paths成功后,控制台输出中提到:“Removing ‘origin’ remote”,这意味着需要重新添加远程仓库:

git remote add origin https://github.com/aPurpleBerry/DataVisualization.git

步骤四 强制推送到GitHub

git push origin --force --all

在这里插入图片描述

步骤五 重新生成通义千问API密钥

上一篇:如何用注册机破解Reflexive游戏-一、下载注册机与破解文件


下一篇:生成表格pdf格式