问题的背景
事情是这样的,我在写一个发送邮件验证码功能时采用了 spring-boot-starter-mail,使用时,需要在application.yml 文件中配置 SMTP 授权码才能发送邮件。
于是把自己邮箱中生成的 SMTP 授权码写到了 yml 中
测试了一下,发现功能没什么问题然后就把代码提交了…
问题的产生
提交了几个功能的代码之后,查看代码提交记录时发现,application.yml 中存在 SMTP 授权码,我想造成这个问题的原因,应该是之前测试完邮件验证码功能之后,由于疏忽没有将其删除掉就把代码提交了…
设想一下,假如这不是授权码而是第三方收费的密钥呢?显然这是对项目来说是不安全的
解决问题的思路与步骤
将代码回退到feat: 完成获取图形验证码接口
提交,并删除掉授权码保留后续提交的代码。
1、首先创建一个分支,用于备份
2、回退代码
选择回退到feat: 完成获取图形验证码接口
提交
这里 idea 显示让我们选择回退参数,这里选择软,对应的是git reset --soft
:撤回已提交的修改内容,保留工作区和暂存区修改的内容,用于修改提交历史(例如合并多个提交)而无需重新添加或修改文件。
注意:不要选择硬,因为硬对应的是git reset --hard
:丢弃工作区和暂存区所有未提交的修改内容, 用于彻底丢弃修改,直接恢复到某个提交的“干净”状态。
这会导致我们丢失feat: 完成获取图形验证码接口
提交之前的所有代码!!!
3、删除SMTP授权码
4、修改之后合并提交
合并提交之后,再次查看提交记录,发现已经将授权码删除掉了
总结
本文讲述了如何使用 idea 的 git 图形化功能安全地回退并删除代码中的密钥信息。
通过本例,在以后的开发过程中我们需要注意:
- 不要将密钥敏等信息直接写入代码中;
- 在提交前检查密钥感敏感信息;
- 定期审查提交记录。