Kako poništiti osjetljive datoteke iz Gita

Datoteke faze, dodajte poruku urezivanja, pritisnite. Ne, čekaj! Ne ta datoteka. A sada moramo početi guglati.

Svaki je programer u prošlosti slučajno počinio raditi osjetljive datoteke. Pa kako popraviti situaciju i osigurati da se ona više neće ponoviti?

U ovom ću članku objasniti što učiniti kada slučajno napravite osjetljivu datoteku i uključiti potrebne Git naredbe za podešavanje povijesti.

Kontrola štete

Dakle, slučajno ste počinili osjetljivu datoteku. Nazovimo to .env . Na dva su važna pitanja odgovoriti:

  • Jeste li gurnuli urezivanje u udaljeno spremište?
  • Je li udaljeno spremište javno?

Još nije gurnuto

Ako još niste pogurali, situacija nije nimalo kritična. Možete se vratiti na prethodni urezi :

git reset HEAD^ --soft 

Vaše će datoteke ostati u radnoj kopiji tako da možete popraviti osjetljivu datoteku / informacije. Ako želite zadržati urezivanje i samo ukloniti osjetljivu datoteku , učinite:

git rm .env --cached git commit --amend 

Možete koristiti --amendjedini na najnovijem urezivanju. Ako ste uz to uspjeli dodati hrpu predavanja, upotrijebite:

git rebase -i HEAD~{how many commits to go back?} 

To će vam omogućiti da popravite neispravno urezivanje i ponovit će sve preostale predaje nakon popravka, tako da ih nećete izgubiti.

Već gurnuti

Ako ste gurnuli, postoji važna razlika između javnih i privatnih spremišta.

Ako je vaše spremište privatno i nema botova ili ljudi kojima ne vjerujete s pristupom, možete jednostavno izmijeniti posljednje urezivanje pomoću dvije gornje naredbe.

Ako ste gurnuli hrpu obveza na vrh problematičnog, i dalje možete koristiti filtar-granu ili BFG repo čistač za uklanjanje osjetljive datoteke iz povijesti gita :

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch .env" --prune-empty --tag-name-filter cat -- --all 

Ali imajte na umu dva važna aspekta ovih promjena:

  • Vi zapravo mijenjate povijest

    Ako postoje drugi ljudi, druge grane, druge račve ili otvoreni zahtjevi za povlačenjem koji se oslanjaju na trenutno stanje spremišta, razbit ćete ih. U tim se slučajevima prema spremištu ponašajte kao da je javno i izbjegavajte mijenjati povijest.

  • Morate očistiti predmemoriju

    Uvijek se morate obratiti podršci svog davatelja usluga pohrane Git i zatražiti da očiste predmemoriju vašeg spremišta. Iako ste popravili problematično urezivanje ili prepisali povijest, stari zapis s osjetljivom datotekom ostaje u predmemoriji. Morali biste znati njezin ID da biste mu pristupili, ali i dalje je dostupan dok ne očistite predmemoriju.

Trebam li regenerirati ključeve ako se gurnu u javno spremište?

Ukratko, da. Ako je vaše spremište javno ili ako iz bilo kojeg drugog razloga ne mislite da je to sigurno mjesto, osjetljive podatke morate smatrati ugroženima.

Čak i ako uklonite podatke iz svog spremišta, ne možete ništa učiniti s botovima i ostalim vilicama repo-a. Pa koji su sljedeći koraci?

  • Deaktivirajte sve ključeve i / ili lozinke

    Učinite to kao prvi korak. Jednom kada deaktivirate tipke, osjetljivi podaci postaju beskorisni.

  • Prilagodite gitignore

    Dodajte sve osjetljive datoteke u .gitignore kako biste bili sigurni da ih git neće pratiti.

  • Uklonite osjetljivu datoteku
  • Založite popravak sa suvislim objašnjenjem

    Ne pokušavaj sakriti pogrešku. Ostali suradnici i vi za mjesec dana cijenit ćete objašnjenje što se dogodilo i što ovaj popravak popravlja.

Najbolji postupci prilikom pohrane osjetljivih podataka u Git

Da biste izbjegli ovakvu situaciju u budućnosti, evo nekoliko savjeta za pohranu osjetljivih podataka:

Čuvajte osjetljive podatke u .env datoteci (ili sličnoj datoteci na drugim platformama)

API ključeve i ostale osjetljive podatke čuvajte u jednoj .env datoteci. Na taj način nećete slučajno registrirati novi ključ kada je .env datoteka već izuzeta iz gita.

Još jedna velika prednost je što pristup svim ključevima dobivate pomoću globalne procesne varijable.

Koristite API ključeve ako je moguće

API ključeve lako je generirati i deaktivirati ako su ugroženi. Ako je moguće, koristite ih i izbjegavajte korištenje vjerodajnica / lozinki.

Dodajte API ključeve u svoj alat za izgradnju

API ključevi obično su potrebni tijekom izrade aplikacija. Alati za izradu poput Netlifya omogućuju vam dodavanje ovih ključeva u sigurna područja njihove administracije. Ti se ključevi automatski ubrizgavaju u vašu aplikaciju putem globalne varijable procesa .

Dodajte datoteku .env u gitignore

Pazite da Git ne prati datoteke koje sadrže osjetljive podatke.

Navedite datoteku .env.template

Datoteka predloška upućuje ostale suradnike da dodaju potrebne API ključeve, bez potrebe da čitaju dugačke dokumente.

Ne mijenjajte povijest na daljinskom upravljaču

Koristite ovo kao pravilo. Ako ste se pridržavali gornjih pravila, nećete trebati mijenjati povijest.

Nadam se da su vam ove informacije pomogle da ostanete na sigurnom. Imate li osobnog iskustva s nepokolebljivošću ili ste možda naučili dobru lekciju ? Razgovaraj sa mnom na Twitteru :-)