如何删除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):

    1. string awsAccessKey = "pwiCZSMCIcM6+q+h";
    2. string awsSecretKey = "861YUaeCHqzaS5OX+OmAK1XD37kmQhA2";
    3. Console.WriteLine("Hello, I Switched to correct email!");
  • 生产环境配置文件(见appsettings.Production.json):

    1. {
    2. "ConnectionString": "Data Source=production-db.starworks.cc,32768; User Id=sensitive_user; Password=MyVeryVerlyStr0ngPassw0rd!; Initial Catalog=ProductionDB; app=Program1"
    3. }
  • 敏感信息文件夹(见userSecrets文件夹)

  • 大二进制文件(见bin\Program.exe

从以上敏感信息的诚意,可见小编(周杰的DotNet骚操作)为了写这遍文章已经拼了

如何删除GIT仓库中的敏感信息的更多相关文章

  1. 如何永久删除git仓库中敏感文件的提交记录

    如何永久删除git仓库中敏感文件的提交记录 参考: 1. https://help.github.com/articles/remove-sensitive-data/

  2. git忽略文件并删除git仓库中的文件

    问题描述 不慎在创建.gitignore  文件之前的时候将文件push到了 git仓库,即使之后在.gitignore文件中写入新的过滤规则,这些规则也不会起作用的,git依然会对所有git仓库中的 ...

  3. git 仓库中删除历史大文件

    git 仓库中删除历史大文件 在git中增加了一个很大的文件,而且被保存在历史提交记录中,每次拉取代码都很大,速度很慢.而且用删除 提交历史记录的方式不是很实际. 以下分几个步骤介绍如何减小.git文 ...

  4. 记一次删除Git记录中的大文件的过程

    app/test/target/ #查看大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/ ...

  5. 使用 .gitignore 忽略 Git 仓库中的文件

    .gitignore 在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store文件,或者是Xocde的操作记录,又或 ...

  6. Spring Boot 配置中的敏感信息如何保护?

    在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...

  7. 克隆git仓库中的一个分支

    克隆git仓库中的某一个分支,可用如下命令: git clone -b <branch_name> <repo> 如:git clone -b hdcp_ree_tee_dev ...

  8. 如何将本地git仓库中的代码上传到github

    1,  在github上新建一个仓库,比如为:CSS3Test,仓库地址为:https://github.com/hyuanyuanlisiwei/CSS3Test 2,本地git仓库中的文件项目为C ...

  9. 血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息

    在JavaScript文件中存储敏感数据,不仅是一种错误的实践方式,而且还是一种非常危险的行为,长期以来大家都知道这一点. 而原因也非常简单,我们可以假设你为你的用户动态生成了一个包含API密钥的Ja ...

随机推荐

  1. Socket编程(C语言实现):bind()函数英文翻译

    本篇翻译的bind()函数,我参考的国外网站是: bind 朋友们可以自由转载我对英文的中文翻译,但是对于"作者注:"的描述,转载时请注明出处和作者,否则视为侵权. 下面是翻译的正 ...

  2. 使用gets函数常见问题

    C语言面试经常会考如下一道题,哪里有错误: #include <stdio.h>    int main()  {     char string[100] = {'\0'};       ...

  3. JedisClient操作redis 单机版和集群版

    一.在pom文件中添加依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency&g ...

  4. 在安装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 ...

  5. vue教程(五)--路由router介绍

    一.html页面中如何使用 1.引入 vue-router.js 2.安装插件 Vue.use(VueRouter) 3.创建路由对象 var router = new VueRouter({ // ...

  6. python load,loads,dumps,dump区别

    json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps()和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. 下面演 ...

  7. java练习---2

    //程序员:罗元昊 2017.9.6public class My{       public static void main(String[] args){              int a= ...

  8. springBoot综合开发

    作者:纯洁的微笑出处:www.ityouknow.com 版权所有,欢迎保留原文链接进行转载:) 上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门. ...

  9. EF 拉姆达 linq 帮助类

    (这个类是很早以前在网上找的,忘记出处请原谅.) 一.基本用法 [Route("List")] public ApiResult GetList(int page, int lim ...

  10. 【Sublime】设置显示编码格式

    Mac 上的 Sublime 显示编码格式,设置方法: 右下角显示的 UTF-8 就是当前的编码格式. 添加如下代码: { "font_size": 18, // Display ...