Ga naar hoofdinhoud

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:

.env
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:

server.js
import 'dotenv/config'

console.log(process.env.API_SLEUTEL) // mijn-geheime-sleutel-123

Bekijk de dotenv documentatie voor installatie en alle opties.

Commit nooit een .env bestand

Een .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:

.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:

.env.example
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

BestandIn Git?Bevat echte waarden?
.envNee — staat in .gitignoreJa
.env.exampleJaNee
Hostingplatformen hebben hun eigen plek voor geheimen

Op platforms zoals Vercel, Netlify en Railway sla je omgevingsvariabelen op via hun dashboard of CLI — nooit als bestand. Zo komen geheimen nooit in je code of repository terecht.

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.

Kop koffie nodig?

Probeer De Koffiejongens met 50% korting op je bestelling. Geteeld door boeren die met de natuur werken en eerlijk betaald krijgen.