Un secret ne vit jamais dans le code, ni dans le dépôt git. Il vit dans l'environnement, injecté au moment de l'exécution. Le code lit process.env ; il ne connaît jamais la valeur.
Un .env commité une fois reste dans l'historique git à jamais, même supprimé ensuite. Le seul vrai correctif : faire tourner (révoquer + régénérer) le secret exposé.
Les variables CI/CD masquées sont exactement celles de bien utiliser GitLab CI/CD.
Deux réflexes : ne jamais mettre un secret dans une variable NEXT_PUBLIC_ (elle finit dans le bundle client), et valider la présence des secrets au démarrage plutôt que de découvrir qu'il en manque un en pleine requête prod.
La frontière NEXT_PUBLIC_ est le même piège que dans les failles de sécurité de base sur Next.js.
Savoir que ça casse avant le client : logs structurés, métriques, alertes qui ne crient pas pour rien.
Un backup non testé n'est pas un backup. Rétention, restauration réelle, et la règle 3-2-1.