Geheimen bewaren met omgevingsvariabelen
Stel je bouwt een website die gebruikmaakt van een externe dienst — een betaalprovider, een kaartendienst, een e-mailservice. Die dienst geeft je een API-sleutel: een geheime code die bewijst dat jij het bent. Wat nou als je die sleutel per ongeluk op GitHub zet?
Dit gebeurt constant. En de gevolgen kunnen groot zijn: iemand misbruikt jouw sleutel, de kosten lopen op, of je data raakt gecompromitteerd. Omgevingsvariabelen zijn de oplossing.
Wat is een omgevingsvariabele?
Een omgevingsvariabele (Engels: environment variable) is een waarde die je buiten je code opslaat — in de omgeving waar de code draait. Je code leest de waarde op het moment dat hij wordt uitgevoerd, maar de waarde zit nooit in je broncode zelf.
Vergelijk het met een kluis naast je bureau. De code weet dat er een kluis is en vraagt er de sleutel uit op. Maar de sleutel zelf staat nergens in je code geschreven.
Het .env bestand
De meest gebruikte manier om omgevingsvariabelen lokaal op te slaan is een .env bestand in de root van je project:
DATABASE_URL=postgres://gebruiker:wachtwoord@localhost/mijndb
API_SLEUTEL=mijn-geheime-sleutel-123
Met de bibliotheek dotenv laad je deze waarden automatisch in je Node.js applicatie:
import 'dotenv/config'
console.log(process.env.API_SLEUTEL) // mijn-geheime-sleutel-123
Bekijk de dotenv documentatie voor installatie en alle opties.
.env bestandEen .env bestand met echte waarden hoort nooit in Git terecht te komen. Zodra het op GitHub staat — ook al verwijder je het daarna — is het te laat. Geautomatiseerde bots scannen GitHub continu op gelekte sleutels.
.env toevoegen aan .gitignore
Zorg dat Git het bestand volledig negeert door het toe te voegen aan je .gitignore:
.env
.env.local
.env.production
Maak je een nieuw project aan? Voeg .env direct als eerste toe aan je .gitignore, nog vóórdat je ook maar één waarde hebt ingevuld.
.env.example — wél committen
Hoe weet een collega (of jijzelf op een andere computer) welke variabelen het project nodig heeft? Maak een .env.example bestand aan met dezelfde sleutels maar zonder echte waarden:
DATABASE_URL=
API_SLEUTEL=
Dit bestand commit je wél naar Git. Het dient als documentatie: "dit zijn de variabelen die je moet invullen om het project te laten werken."
Overzicht
| Bestand | In Git? | Bevat echte waarden? |
|---|---|---|
.env | Nee — staat in .gitignore | Ja |
.env.example | Ja | Nee |
Omgevingsvariabelen zijn een van de eerste gewoontes die elke developer zich eigen moet maken. Begin er direct mee — vóórdat je je eerste sleutel aanmaakt.