Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

API-Schlüssel aus dem Code heraushalten

Nach dieser Lektion: Ich kann einen Schlüssel aus meinem Code und meinem Git-Verlauf heraushalten.

Lektion, 60 Min.3 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Ein geleakter API-Schlüssel kostet Geld

Ein API-Schlüssel ist eine geheime Zeichenfolge, die beweist, dass eine Anfrage von Ihnen kommt. Ein Modellanbieter belastet oft Ihr Konto für jeden Aufruf, der ihn trägt.

Entwickelnde lassen Schlüssel durchsickern, indem sie sie in den Code tippen und diesen zu Git hochladen. Automatische Suchprogramme suchen genau das: Ein geleakter Schlüssel ist eine Rechnung und ein Risiko.

Am Ende dieser Lektion

Notiz

Ich kann einen Schlüssel aus meinem Code und meinem Git-Verlauf heraushalten.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
API-Schlüsseleine geheime Zeichenfolge, die beweist, dass eine Anfrage Ihre ist
Umgebungsvariableein benannter Wert, den ein Programm von außerhalb seines Codes erhältMEIN_API_SCHLUESSEL
Die Datei .enveine Textdatei mit Zeilen NAME=Wert für Ihren Rechner
Die Datei .gitignoreeine Liste von Dateien, die Git nie verfolgen soll
Erneuerneinen neuen Schlüssel erzeugen und den alten sperren

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

In diesem Labor enthält Ihr Code keinen Schlüssel

Ihr Skript sendet den Header authorization: Bearer lab. Das Wort lab ist ein Platzhalter, kein Schlüssel. Beim Hinausgehen tauscht die Plattform es gegen Ihr echtes Token aus und wählt das Modell.

Der Schlüssel steht also nie in Ihrem Code, und Sie sehen ihn nie. In einem echten Projekt halten Sie den Schlüssel selbst.

Ein Modell ohne Schlüssel aufrufen

Befehl
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';(async()=>{const kopf={'content-type':'application/json',authorization:'Bearer lab'};console.log('Autorisierungs-Header in meinem Code: '+kopf.authorization);try{const r=await fetch(u,{method:'POST',headers:kopf,body:JSON.stringify({model:'lab',messages:[{role:'user',content:'Warum muss ein API-Schlüssel aus dem Code bleiben? Antworten Sie in einem Satz.'}],max_tokens:60})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);console.log('Modell: '+j.choices[0].message.content)}catch(e){console.log('Keine Antwort ('+e.message+'). Aufgezeichnetes Beispiel:');console.log('Modell: Wer den Code lesen kann, kann den Schlüssel nutzen und Ihr Geld ausgeben.')}})()"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein echter Schlüssel lebt in der Umgebung

Ein echter Anbieter gibt Ihnen einen langen Schlüssel. Tippen Sie ihn nie in eine Datei, die Git verfolgt. Legen Sie ihn in eine Umgebungsvariable und lesen Sie ihn im Code mit process.env.MEIN_API_SCHLUESSEL.

Auf Ihrem Rechner halten Sie die Variablen in einer .env-Datei und tragen diese in .gitignore ein, damit Git sie nie sieht.

Eine Demo-.env und .gitignore schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-schluessel && printf 'BEISPIEL_API_SCHLUESSEL=kein-echter-schluessel-123\n' > demo-schluessel/.env && printf '.env\n' > demo-schluessel/.gitignore"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die .env lesen und den Wert verbergen

Befehl
docker exec -w /home/node/project agent node -e "const fs=require('fs');const nl=String.fromCharCode(10);for(const zeile of fs.readFileSync('demo-schluessel/.env','utf8').trim().split(nl)){const i=zeile.indexOf('=');const w=zeile.slice(i+1);console.log(zeile.slice(0,i)+' ist gesetzt, '+w.length+' Zeichen, Wert verborgen')}console.log('.env steht in .gitignore: '+(fs.readFileSync('demo-schluessel/.gitignore','utf8').split(nl).includes('.env')?'ja':'nein'))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Dieselbe Idee in einem echten Betrieb

Ihr Hosting-Dienst hat einen Ort für Geheimnisse und reicht sie als Umgebungsvariablen an Ihr Programm weiter. Der Code bleibt auf Ihrem Laptop und auf dem Server derselbe.

Legen Sie eine Datei .env.example mit den Namen und erfundenen Werten ab. Sie sagt einer neuen Kollegin, was einzustellen ist.

Beispiel: was nach einem Leck zu tun ist

Was passiert istWas zu tun ist
Der Schlüssel steht im Code, nicht committetIn eine Umgebungsvariable verschieben
Er ist committet, nicht hochgeladenDen Schlüssel erneuern, dann den Commit umschreiben
Er ist in einem öffentlichen RepositoryDen Schlüssel sofort erneuern, dann den Verlauf bereinigen
Er wurde in einen Chat oder Prompt eingefügtDen Schlüssel erneuern

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, ein neuer Commit, der den Schlüssel löscht, entferne ihn. Git behält alle alten Commits, der Schlüssel bleibt also im Verlauf für jeden, der ihn kopiert hat. Erneuern Sie den Schlüssel, denn nur ein neuer macht den alten nutzlos.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.