DanLevy.net

Schutz Ihrer Tokens, API-Schlüssel und Geheimnisse

Öffentlich? Privat? Wat?

Hero image for Schutz Ihrer Tokens, API-Schlüssel und Geheimnisse

Wann sollten Sie Ihre Token schützen?

Die Sicherung von API-Schlüsseln und -Token ist extrem wichtig!

Ein einziger Fehler kann dazu führen, dass Hacker Ihre Server und Daten übernehmen!

Es sollte doch nicht so schwierig sein, zu entscheiden, ob ein bestimmter Token versteckt werden muss – selbst anhand der offiziellen Dokumentation nicht!

Es wird oft noch schlimmer durch den Wortsalat aus verwandten Begriffen, die Sie antreffen werden: Tokens, Schlüssel, Anmeldeinformationen, Geheimnisse, privat und öffentlich.

Lassen Sie uns dies neu strukturieren in geheim und nicht-geheim.



🔒 Geheimschlüssel

** ‼️ Wichtig:** Geheimschlüssel MÜSSEN von Git ignoriert und aus allen Browser-Code-Dateien ausgeschlossen werden. dotenv korrekt einsetzen


Wie erkennen Sie, dass Sie mit einem Geheimschlüssel arbeiten?


👍 Faustregel: Server, die CORS-Fehler zurückgeben, unterstützen keine Browser-Anfragen. Dies deutet stark darauf hin, dass Sie den Dienst über einen Proxy leiten MÜSSEN, als wäre der Schlüssel geheim.
👍 Faustregel: Kostenintensive Dienste sollten (fast) immer über einen Proxy geleitet oder versteckt werden.

👍 Faustregel: Bei einem Schreibvorgang (Dateiupload, Einfügen einer Datenbankzeile) könnten Sie mit Geheimschlüsseln arbeiten.


Use cases & features: Geheimschlüssel

Checkliste: Geheimnisse sicher verarbeiten

Schnellübersicht

Führen Sie die folgenden Schritte aus, um Geheimnisse aus Ihrem Code zu eliminieren:

NICHT eine .env-Datei auf bereitgestellten Servern erstellen. 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.

Verwandter Artikel: Sicheres Verwenden von dotenv in NodeJS


🌍 Nicht-geheime Schlüssel

👍 Faustregel: Wenn ein Schlüssel in den Browser gesendet werden muss, entweder als Code oder inline (z. B. über einen <script src="https://my-api/?apiKey=123-abc-456">-Tag), handelt es sich definitiv um einen nicht-geheimen Schlüssel. Ein gängiges Beispiel ist Google Maps.


Einsatzszenarien & Funktionen: Nicht-geheime Schlüssel

✅ Umgang mit Nicht-Geheimnissen:

Es ist sicher, nicht-geheime (öffentliche) Schlüssel direkt in den Code einzubauen!

Verwenden Sie eine gemeinsam genutzte config.js für Ihre Anwendung, um dies langfristig einfacher zu verwalten.

Beispiel:

config.js
module.exports = {
googleMapsKey: '123-abc'
};
load-map.js
const config = require('./config.js');
const key = config.googleMapsKey;
const src = `//maps.googleapis.com/maps/api/js?key=${key}`;
// ...

Hinweis: Es gibt weitere Use Cases für Umgebungsvariablen. Einige davon wurden hier nicht behandelt: CI/CD/Tests, Feature-Flags und Laufzeitkonfiguration für spezielle Umgebungen!