ENV-verschilcontrole
Vergelijk twee .env-bestanden (staging versus productie, vóór versus na een implementatie) en zie precies welke sleutels zijn toegevoegd, verwijderd of gewijzigd, waarbij geheim ogende waarden automatisch worden gemaskeerd.
Resultaat
Als je een staging .env-bestand vergelijkt met de productie, of de implementatieconfiguratie van vandaag met die van vorige week, zie je hoe echte storingen beginnen: een ontbrekende DATABASE_URL, een POORT die stilletjes is veranderd, een API-sleutel die in de ene omgeving is gerouleerd, maar niet in de andere. Het plakken van beide bestanden in een algemene tekstdiff helpt ook niet veel: het laat je zien welke regels verschillen, niet welke omgevingsvariabelen daadwerkelijk zijn veranderd, en het drukt met plezier elke geheime waarde in het volle zicht af op het moment dat je de uitvoer deelt met een teamgenoot.
Deze tool parseert beide bestanden op de manier waarop dotenv ze daadwerkelijk leest: één KEY=waarde-paar per regel, # opmerkingen en lege regels genegeerd, waarden met enkele of dubbele aanhalingstekens zonder aanhalingstekens (met \n alleen zonder escapetekens tussen dubbele aanhalingstekens, precies zoals de dotenv-conventie specificeert), en een optioneel export KEY=value-voorvoegsel wordt getolereerd op de manier waarop shell-sourced env-bestanden het gebruiken. Elk bestand wordt een schone sleutel-naar-waarde-kaart, en de twee kaarten worden vervolgens per sleutel van elkaar onderscheiden: alleen aanwezig in bestand A is 'verwijderd', alleen aanwezig in bestand B is 'toegevoegd', aanwezig in beide met een andere waarde is 'gewijzigd', en identieke waarden zijn 'ongewijzigd' en standaard verborgen, zodat de tabel gefocust blijft op wat feitelijk verschilt.
De functie die dit veilig maakt voor daadwerkelijk gebruik met echte geheimen is automatische maskering. Elke waarde die in de diff-tabel wordt weergegeven, wordt gecontroleerd aan de hand van twee onafhankelijke signalen: ziet de sleutelnaam eruit als een geheim (een hoofdletterongevoelige overeenkomst met KEY, SECRET, TOKEN, PASSWORD, PRIVATE of CREDENTIAL), of heeft de waarde zelf een hoge Shannon-entropie - dezelfde informatietheoretische maatstaf (-Σ p(c)·log2(p(c)) over de tekens van de waarde) die API-sleutels, tokens en willekeurige wachtwoorden markeert als statistisch verschillend van gewone woorden zelfs als de sleutelnaam geen hint geeft. Elk signaal is voldoende om een waarde te maskeren tot aan de eerste en laatste twee tekens, onafhankelijk berekend voor de oude en nieuwe kant van elke gewijzigde rij.
Alles – parseren, differentiëren, entropiescores en maskeren – draait volledig in uw browser; noch het bestand, noch enige waarde die daaruit wordt gehaald, wordt ooit ergens naartoe verzonden. Dat is de juiste garantie voor een tool waarvan de hele taak bestaat uit het naast elkaar bekijken van twee bestanden die waarschijnlijk echte databasegegevens, API-sleutels en wachtwoorden bevatten.