Geheimnisverwaltung und Umgebungsvariablen
Unterscheiden Sie zwischen serverseitigen und clientseitigen Umgebungsvariablen, verhindern Sie das Offenlegen von Geheimnissen in Bundles und verwenden Sie eine Injektion zur Laufzeit.
Geheimnisverwaltung und Umgebungsvariablen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Zwei Klassen von Umgebungsvariablen
In einer React-Anwendung gibt es zwei Klassen von Umgebungsvariablen: serverseitige (niemals an den Browser gesendet) und clientseitige (in das JavaScript-Bundle eingebettet). Zu verstehen, welcher Klasse Ihre Variablen angehören, ist der erste Schritt bei der Geheimnisverwaltung, denn clientseitige Variablen sind nach der Bereitstellung des Bundles praktisch öffentlich.
Vite-Präfixkonvention
In Vite-Projekten werden nur Variablen mit dem Präfix VITE_ in das Client-Bundle aufgenommen. VITE_PUBLIC_API_URL=https://api.example.com ist im Browser-Code über import.meta.env.VITE_PUBLIC_API_URL verfügbar. Alle anderen Variablen werden beim Build aus dem Bundle entfernt und bleiben ausschließlich serverseitig verfügbar.
Next.js-Präfixkonvention
In Next.js macht das Präfix NEXT_PUBLIC_ eine Variable für Browser-JavaScript verfügbar. NEXT_PUBLIC_ANALYTICS_ID=UA-123 wird in das Client-Bundle eingebettet. Variablen ohne dieses Präfix (wie DATABASE_URL) sind nur in serverseitigem Code (Server Components, API-Routen und Server Actions) verfügbar und werden nie an den Browser gesendet.
Das Risiko einer versehentlichen Offenlegung
Eine Variable ohne Präfix ist dennoch zugänglich, wenn sie versehentlich serialisiert wird. Wenn beispielsweise eine Server Component ihr vollständiges Konfigurationsobjekt als Prop an eine Client Component übergibt und diese Konfiguration DATABASE_URL enthält, erscheint dieses Geheimnis im an den Browser gesendeten HTML. Sorgfältiges Prop-Drilling und eine Prüfung der Serialisierung verhindern dies.
Das darf niemals in Client-Code stehen
Folgendes darf niemals im Client-Bundle enthalten sein: Datenbankverbindungszeichenfolgen und Passwörter, geheime API-Schlüssel von Drittanbietern (Stripe-Secret-Key, OpenAI-API-Key), private RSA/EC-Schlüssel, JWT-Signaturgeheimnisse und interne Authentifizierungstoken für Services. Wenn Sie etwas davon für einen API-Aufruf benötigen, leiten Sie diesen über einen Server-Endpunkt weiter.
Das Backend-for-Frontend-Muster
Das Backend for Frontend (BFF)-Muster ordnet eine dünne Server-Schicht zwischen der React-App und sensiblen externen Diensten an. Der Client ruft /api/stripe/charge auf, der BFF-Server fügt den Stripe-Secret-Key hinzu und ruft die Stripe-API auf, und der BFF gibt nur die erforderlichen Antwortdaten zurück. Geheimnisse bleiben dauerhaft auf dem Server.
dotenv-vault und verwaltete Geheimnisverwaltung
dotenv-vault verschlüsselt Ihre .env-Datei und ermöglicht die sichere Freigabe und Bereitstellung über Umgebungen hinweg, ohne Klartextgeheimnisse in die Versionsverwaltung einzuchecken. Zu den Alternativen für die Produktion gehören HashiCorp Vault (Enterprise), AWS Parameter Store (SSM) und GCP Secret Manager – sie alle bieten den API-basierten Abruf von Geheimnissen zur Laufzeit statt zur Build-Zeit.
Geheimnisse in CI/CD-Pipelines
CI/CD-Plattformen (GitHub Actions, GitLab CI) stellen verschlüsselte Geheimnisspeicher bereit, auf die während der Builds als Umgebungsvariablen zugegriffen werden kann. Speichern Sie Geheimnisse in GitHub Secrets und referenzieren Sie sie in Workflows als ${{ secrets.STRIPE_SECRET_KEY }}. Geheimnisse werden in Logs maskiert und niemals in das Build-Artefakt aufgenommen.
Umgebungsspezifische Konfigurationsdateien
Next.js und Vite unterstützen mehrere .env-Dateien: .env (alle Umgebungen), .env.local (lokale Überschreibungen, von Git ignoriert), .env.development, .env.production. Die lokale Datei überschreibt Werte aus der gemeinsamen Datei und ermöglicht eine entwicklerspezifische Konfiguration, ohne andere Umgebungen zu beeinflussen.
Bundles auf Geheimnisse prüfen
Prüfen Sie nach dem Build das JavaScript-Bundle auf versehentlich offengelegte Geheimnisse. Führen Sie grep -r "password|secret|api_key" dist/ aus oder verwenden Sie ein spezielles Tool wie eine strings-Analyse der erstellten Dateien. Einige Geheimnisse lassen sich, wenn sie versehentlich enthalten sind, anhand ihres Formats eindeutig erkennen (UUIDs, Base64-Zeichenfolgen oder Schlüsselpräfixe wie sk_live_).
Prinzip der geringsten Offenlegung
Jede Umgebung und jeder Dienst sollte nur auf die Geheimnisse zugreifen können, die er benötigt. Der React-Client benötigt überhaupt keine Geheimnisse – er sollte nur öffentliche Identifikatoren erhalten. Der BFF-Server benötigt nur die Geheimnisse, die für die von ihm aufgerufenen APIs erforderlich sind. Entwicklungsumgebungen sollten nicht für die Produktion bestimmte API-Schlüssel mit eingeschränkten Berechtigungen und Ausgabenlimits verwenden.
NEXT_PUBLIC_-Präfix
Was geschieht mit einer Next.js-Umgebungsvariable mit dem Präfix NEXT_PUBLIC_?
Lektionszusammenfassung
Vite verwendet VITE_ und Next.js verwendet NEXT_PUBLIC_, um Variablen im Browser-Bundle verfügbar zu machen. Alle anderen Variablen sind nur serverseitig verfügbar. Nehmen Sie Datenbankpasswörter, geheime API-Schlüssel oder JWT-Signaturgeheimnisse niemals in Client-Code auf. Verwenden Sie das BFF-Muster, um sensible API-Aufrufe weiterzuleiten. Verwenden Sie dotenv-vault, AWS Parameter Store oder GitHub Secrets für die Geheimnisverwaltung in der Produktion. Prüfen Sie erstellte Bundles auf versehentlich offengelegte Geheimnisse.
Lerne React mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 88
- Lektionen
- 324
Häufig gestellte Fragen
Ist die Lektion „Geheimnisverwaltung und Umgebungsvariablen“ kostenlos?
Ja — der vollständige Text von „Geheimnisverwaltung und Umgebungsvariablen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Geheimnisverwaltung und Umgebungsvariablen“?
Unterscheiden Sie zwischen serverseitigen und clientseitigen Umgebungsvariablen, verhindern Sie das Offenlegen von Geheimnissen in Bundles und verwenden Sie eine Injektion zur Laufzeit. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Geheimnisverwaltung und Umgebungsvariablen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- XSS in React: dangerouslySetInnerHTML und Skripte von Drittanbietern
- CSRF-Schutz in React- und API-Setups
- Content Security Policy für React-Apps
- Geheimnisverwaltung und Umgebungsvariablen