ENV Diff Checker
Primerjajte dve datoteki .env (uprizoritveno proti produkcijski, pred ali po uvedbi) in natančno preverite, kateri ključi so bili dodani, odstranjeni ali spremenjeni, pri čemer so skrivne vrednosti samodejno zamaskirane.
Rezultat
Če primerjate uprizoritveno datoteko .env s produkcijsko ali današnjo konfiguracijo za uvajanje s tistimi iz prejšnjega tedna, na oko vidite, kako se začnejo resnični izpadi: manjkajoči DATABASE_URL, PORT, ki je bil tiho spremenjen, ključ API-ja, ki je bil spremenjen v enem okolju, v drugem pa ne. Tudi lepljenje obeh datotek v generično besedilno razliko ne pomaga veliko — pokaže vam, katere vrstice se razlikujejo, ne pa, katere spremenljivke okolja so se dejansko spremenile, in z veseljem natisne vsako skrivno vrednost na vidnem mestu v trenutku, ko izhod delite s soigralcem.
To orodje razčleni obe datoteki tako, kot ju dotenv dejansko prebere – en par KEY=vrednost na vrstico, # komentarji in prazne vrstice so prezrte, vrednosti z enojnimi ali dvojnimi narekovaji brez narekovajev (z \n neubežnim le znotraj dvojnih narekovajev, natanko tako, kot določa konvencija dotenv) in neobvezna izvozna predpona KEY=vrednost, ki je tolerirana na način, na katerega jo uporabljajo datoteke env lupinskega izvora. Vsaka datoteka postane čista preslikava ključ-v-vrednosti in preslikavi se nato razlikujeta po ključu: prisotna samo v datoteki A je "odstranjena", prisotna samo v datoteki B je "dodana", prisotna v obeh z drugačno vrednostjo je "spremenjena", enake vrednosti pa so "nespremenjene" in privzeto skrite, tako da tabela ostane osredotočena na tisto, kar se dejansko razlikuje.
Funkcija, zaradi katere je to varno za dejansko uporabo z resničnimi skrivnostmi, je samodejno maskiranje. Vsaka vrednost, prikazana v diff tabeli, se preveri glede na dva neodvisna signala: ali je njeno ime ključa videti kot skrivnost (ujemanje med velikimi in malimi črkami s KEY, SECRET, TOKEN, PASSWORD, PRIVATE ali CREDENTIAL) ali ima sama vrednost visoko Shannonovo entropijo – isto informacijsko-teoretično merilo (-Σ p(c)·log2(p(c)) nad znaki vrednosti), ki označuje ključe API, žetone in naključna gesla kot statistično drugačne od običajnih besed, tudi če ime ključa ne daje nobenega namiga. Oba signala zadostujeta za maskiranje vrednosti do njenih prvih in zadnjih dveh znakov, izračunanih neodvisno za staro in novo stran vsake spremenjene vrstice.
Vse – razčlenjevanje, razlikovanje, entropijsko točkovanje in maskiranje – poteka v celoti v vašem brskalniku; niti datoteka niti nobena vrednost, izvlečena iz njih, ni nikoli poslana nikamor. To je prava garancija za orodje, katerega celotna naloga je pregledovanje dveh datotek, ki bosta verjetno vsebovali resnične poverilnice baze podatkov, ključe API in gesla drugo ob drugi.