ENV Diff Checker
Usporedite dvije .env datoteke (staging vs. production, prije ili nakon implementacije) i vidite točno koji su ključevi dodani, uklonjeni ili promijenjeni, s automatski maskiranim vrijednostima tajnog izgleda.
Rezultat
Uspoređujući početnu .env datoteku s produkcijom ili današnju konfiguraciju implementacije s prošlotjednom, na oko je kako počinju stvarni prekidi: nedostaje DATABASE_URL, PORT koji se tiho promijenio, API ključ koji je rotiran u jednom okruženju, ali ne i u drugom. Lijepljenje obiju datoteka u generički tekstualni diff također ne pomaže puno — pokazuje vam koji se redovi razlikuju, a ne koje su se varijable okoline zapravo promijenile, i sretno ispisuje svaku tajnu vrijednost na vidljivom mjestu u trenutku kada podijelite izlaz sa suigračem.
Ovaj alat raščlanjuje obje datoteke na način na koji ih dotenv zapravo čita — jedan KEY=vrijednost par po retku, # komentara i praznih redaka zanemareni, jednostruke ili dvostruke navodničke vrijednosti bez navodnika (s \n neizbjegnutim samo unutar dvostrukih navodnika, točno onako kako dotenv konvencija navodi), i izborni izvozni prefiks KEY=vrijednost koji se tolerira na način na koji ga koriste env datoteke s izvorom ljuske. Svaka datoteka postaje čista mapa ključ-vrijednost, a dvije se mape zatim razlikuju po ključu: prisutna samo u Datoteci A je 'uklonjena', prisutna samo u Datoteci B je 'dodana', prisutna u obje s različitim vrijednostima je 'promijenjena', a identične vrijednosti su 'nepromijenjene' i skrivene prema zadanim postavkama tako da tablica ostaje usredotočena na ono što se zapravo razlikuje.
Značajka koja ovo čini sigurnim za korištenje sa pravim tajnama je automatsko maskiranje. Svaka vrijednost prikazana u diff tablici provjerava se u odnosu na dva neovisna signala: izgleda li njezin naziv ključa kao tajna (podudaranje bez obzira na velika i mala slova s KEY, SECRET, TOKEN, PASSWORD, PRIVATE ili CREDENTIAL) ili ima li sama vrijednost visoku Shannonovu entropiju — istu informacijsko-teorijsku mjeru (-Σ p(c)·log2(p(c)) preko znakova vrijednosti) koja označava API ključeve, tokene i nasumične lozinke kao statistički različite od običnih riječi čak i kada naziv ključa ne daje nikakvu naznaku. Oba signala dovoljna su za maskiranje vrijednosti do prva i zadnja dva znaka, izračunatih neovisno za staru i novu stranu svakog promijenjenog retka.
Sve — raščlanjivanje, diffing, bodovanje entropije i maskiranje — radi u potpunosti u vašem pregledniku; ni datoteka, niti bilo koja vrijednost ekstrahirana iz njih, nikad se nigdje ne šalje. To je pravo jamstvo za alat čiji je cijeli posao pregledati dvije datoteke koje vjerojatno sadrže stvarne vjerodajnice baze podataka, API ključeve i lozinke jednu pored druge.