DanLevy.net

Verwenden von Umgebungsvariablen in NodeJS

Verwenden von dotenv

Hero image for Verwenden von Umgebungsvariablen in NodeJS

Sichere Handhabung von Geheimnissen und API-Token

Verwandter Artikel: Schützen Sie Ihre Tokens

Lassen Sie uns kurz die Unterschiede zwischen Geheimnissen und nicht-geheimen Schlüsseln zusammenfassen.



Wir konzentrieren uns in diesem Artikel auf die Verwendung von Umgebungsvariablen, um 🔒 Geheimnisse zu verwalten.

Unten finden Sie Beispiele für Code.

Übersicht

Um Geheimnisse in Ihrem NodeJS-Code sicher zu nutzen:

  1. Ersetzen Sie hartcodierte Schlüssel durch Umgebungsvariablen. z. B. process.env.API_SECRET
  2. Verwenden Sie eine Bibliothek wie dotenv zusammen mit einer .env-Datei. Fügen Sie die zuvor hartcodierten Geheimnisse in die .env-Datei ein.
  3. Stellen Sie sicher, dass die .env-Datei in Ihrer .gitignore-Datei ausgeschlossen ist!

ERSTELLEN SIE NICHT eine .env-Datei auf bereitgestellten Servern. Nutzen Sie stattdessen das von Ihrem Hosting-Anbieter (z. B. Heroku, Netlify, AWS EC2) bereitgestellte Tool zur Verwaltung von Umgebungsvariablen, z. B. Dashboard oder Befehlszeile.

Code-Beispiel

Wir definieren einige Dateien.

  1. .env
  2. ./db/connection.js
  3. ./api/users.js

Zunächst installieren Sie das Paket dotenv.

Terminal window
npm install dotenv

Erstellen Sie anschließend eine Datei .env in der Wurzel Ihres Projekts.

.env
PGDATABASE="postgres"
PGHOST="localhost"
PGPORT=5234
PGUSER="postgres"
PGPASSWORD="password"

NIEMALS die .env-Datei committen.

❌ Vermeiden Sie die Erstellung von .env auf Servern.

Überprüfen Sie die Dokumentation Ihres Hosting-Anbieters, um Umgebungsvariablen einzurichten.

Um sicherzustellen, dass Ihre .gitignore-Datei eine Zeile mit .env enthält:

Terminal window
# Automatisch .gitignore aktualisieren
# Ausführen im Terminal:
[ "$(grep '^.env' .gitignore)" == "" ] && echo '.env' >> .gitignore
# Hinweis: Es wird keine Ausgabe angezeigt

Die Datei ./db/connection.js stellt eine gemeinsame pg.Pool-Instanz bereit. Sie wird verwendet, um die Datenbank abzufragen.

./db/connection.js
require('dotenv').config(); // ✅ .env-Datei laden
const pg = require('pg');
const {PGUSER, PGHOST, PGPORT} = process.env;
if (process.env.NODE_ENV === 'development')
console.log(`Verbinde mit ${PGUSER} @ ${PGHOST}:${PGHOST}`);
// ^^ nur für Anzeige von Debug-Verbindungsvariablen
// pg verwendet automatisch die PG*-Umgebungsvariablen
module.exports = new pg.Pool();

Der Ordner ./api enthält Schnittstellen zu Ihren Tabellen/Ansichten.

Hier ist ein Beispiel ./api/users.js für die users-Tabelle.

./api/users.js
const db = require('../db/connection.js');
module.exports = {
findUsername: function(username) {
return db.query('SELECT * FROM users WHERE username=$1', username);
}
};

⚠️ Wichtig: Falls notwendig, verwenden Sie immer einen sicheren Messaging-Dienst (am besten mit Unterstützung für ablaufende Nachrichten.)

Viel Erfolg und lassen Sie mich wissen, wenn Sie Fragen haben! 🎉