如何删除GIT仓库中的敏感信息
如何删除GIT仓库中的敏感信息
正常Git
仓库中应该尽量不包含数据库连接/AWS帐号/巨大二进制文件,否则一旦泄漏到Github
,这些非常敏感信息会影响客户的信息安全已经公司的信誉。公司可能其它还有相关规定,如禁止私人邮件加入GIT仓库。如果违反这些规定,可能会面临辞退、高额罚款、或牢狱之灾等非常严厉的惩罚。
由于Git
的正常操作流程,导致敏感信息一旦进入主分支,再怎么在新的Pull Request
中删除,也无能为力了。其它人都能在历史记录中查询到历史记录中的配置。所以这要求对Git
的签名和签入、推送要有高度的敬畏之心。
然而根据墨菲定律
,可能发生的事情一定会发生。时不时,故意或失手,就会有人将这些信息写到了Git
仓库中。如果代码还没有上传(git push
),那可能还好说,只要将分支删除,然后重新写一下功能即可。但如果已经上传了,或功能太多太复制没办法及时删除,就会后悔莫及了。
这里我将演示一个故意写满“敏感信息”的Github
仓库,然后一步一步演示怎么在历史记录中,删除“敏感信息”,以完成“脱敏”。
仓库需处理的问题说明:
敏感源 | 敏感原因 | 处理方法 |
---|---|---|
sdflysha@qq.com | 个人邮箱签入公司项目 | 替换为“公司”邮箱:sdflysha@starworks.cc |
文件Program.cs | AWS Key保存在文件 | 替换将AWS Key为:REPLACED |
文件appsettings.Production.json | 生产环境配置文件 | 删除 |
文件夹userSecrets | 敏感信息文件夹 | 删除 |
Program.exe | 大二进制文件签入 | 删除 |
这个演示满载“敏感”信息的代码仓库,可以从:https://github.com/sdcb/sensitive-repo-demo 这里下载。
“敏感”信息演示:
个人邮箱签入“公司”项目,可以通过
gitk
命令看到:
AWS Key配置写在代码中(见
Program.cs
):string awsAccessKey = "pwiCZSMCIcM6+q+h";
string awsSecretKey = "861YUaeCHqzaS5OX+OmAK1XD37kmQhA2";
Console.WriteLine("Hello, I Switched to correct email!");
生产环境配置文件(见
appsettings.Production.json
):{
"ConnectionString": "Data Source=production-db.starworks.cc,32768; User Id=sensitive_user; Password=MyVeryVerlyStr0ngPassw0rd!; Initial Catalog=ProductionDB; app=Program1"
}
敏感信息文件夹(见
userSecrets
文件夹)大二进制文件(见
bin\Program.exe
)
从以上敏感信息的诚意,可见小编(周杰的DotNet骚操作
)为了写这遍文章已经拼了
如何删除GIT仓库中的敏感信息的更多相关文章
- 如何永久删除git仓库中敏感文件的提交记录
如何永久删除git仓库中敏感文件的提交记录 参考: 1. https://help.github.com/articles/remove-sensitive-data/
- git忽略文件并删除git仓库中的文件
问题描述 不慎在创建.gitignore 文件之前的时候将文件push到了 git仓库,即使之后在.gitignore文件中写入新的过滤规则,这些规则也不会起作用的,git依然会对所有git仓库中的 ...
- git 仓库中删除历史大文件
git 仓库中删除历史大文件 在git中增加了一个很大的文件,而且被保存在历史提交记录中,每次拉取代码都很大,速度很慢.而且用删除 提交历史记录的方式不是很实际. 以下分几个步骤介绍如何减小.git文 ...
- 记一次删除Git记录中的大文件的过程
app/test/target/ #查看大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/ ...
- 使用 .gitignore 忽略 Git 仓库中的文件
.gitignore 在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store文件,或者是Xocde的操作记录,又或 ...
- Spring Boot 配置中的敏感信息如何保护?
在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...
- 克隆git仓库中的一个分支
克隆git仓库中的某一个分支,可用如下命令: git clone -b <branch_name> <repo> 如:git clone -b hdcp_ree_tee_dev ...
- 如何将本地git仓库中的代码上传到github
1, 在github上新建一个仓库,比如为:CSS3Test,仓库地址为:https://github.com/hyuanyuanlisiwei/CSS3Test 2,本地git仓库中的文件项目为C ...
- 血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息
在JavaScript文件中存储敏感数据,不仅是一种错误的实践方式,而且还是一种非常危险的行为,长期以来大家都知道这一点. 而原因也非常简单,我们可以假设你为你的用户动态生成了一个包含API密钥的Ja ...
随机推荐
- Socket编程(C语言实现):bind()函数英文翻译
本篇翻译的bind()函数,我参考的国外网站是: bind 朋友们可以自由转载我对英文的中文翻译,但是对于"作者注:"的描述,转载时请注明出处和作者,否则视为侵权. 下面是翻译的正 ...
- 使用gets函数常见问题
C语言面试经常会考如下一道题,哪里有错误: #include <stdio.h> int main() { char string[100] = {'\0'}; ...
- JedisClient操作redis 单机版和集群版
一.在pom文件中添加依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency&g ...
- 在安装Openstack的keystone认证服务时,出现The request you have made requires authentication. (HTTP 401) (Request-ID: req-f94bebba-f0c5-4a92-85问题的处理
创建openstack的keystone认证服务器报错: The request you have made requires authentication. (HTTP 401) (Reques ...
- vue教程(五)--路由router介绍
一.html页面中如何使用 1.引入 vue-router.js 2.安装插件 Vue.use(VueRouter) 3.创建路由对象 var router = new VueRouter({ // ...
- python load,loads,dumps,dump区别
json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps()和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. 下面演 ...
- java练习---2
//程序员:罗元昊 2017.9.6public class My{ public static void main(String[] args){ int a= ...
- springBoot综合开发
作者:纯洁的微笑出处:www.ityouknow.com 版权所有,欢迎保留原文链接进行转载:) 上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门. ...
- EF 拉姆达 linq 帮助类
(这个类是很早以前在网上找的,忘记出处请原谅.) 一.基本用法 [Route("List")] public ApiResult GetList(int page, int lim ...
- 【Sublime】设置显示编码格式
Mac 上的 Sublime 显示编码格式,设置方法: 右下角显示的 UTF-8 就是当前的编码格式. 添加如下代码: { "font_size": 18, // Display ...