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

Passwörter im Quellcode finden und vermeiden

Nach dieser Lektion: Ich kann ein Geheimnis in Programmtext finden und sagen, wo es stattdessen liegen soll.

Lektion, 50 Min.3 BefehleWrongSecrets-Lab: fest einprogrammierte Geheimnisse finden und lernen, wohin Geheimnisse gehören

Was ist ein Geheimnis im Quellcode?

Ein Geheimnis im Quellcode ist ein Passwort, ein Schlüssel oder ein Token, das jemand fest in eine Datei eines Programms geschrieben hat. Automatische Suchprogramme finden solche Dateien auf öffentlichen Seiten oft nach wenigen Minuten.

Du lernst, wo Geheimnisse versehentlich landen, wie man sie erkennt und wo sie hingehören. Du übst nur an deiner eigenen Kopie.

Am Ende dieser Lektion

Notiz

Ich kann ein Geheimnis in Programmtext finden und sagen, wo es stattdessen liegen soll.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Geheimnisein Passwort, Schlüssel oder Token, das niemand sonst kennen darf
Quellcodeder Text, den Menschen für ein Programm schreiben
Umgebungsvariableein Wert, den das System dem Programm von außen gibtDB_PASSWORT
Base64eine Schreibweise für Daten, die jeder zurückübersetzen kann
Tokenein langer Text, der wie ein Passwort für ein Programm wirkt

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

Wo landen Geheimnisse aus Versehen?

Meist ist es keine böse Absicht. Jemand will nur schnell testen, schreibt das Passwort in die Datei und vergisst es.

Dann liegt es im Quellcode, in einer Einstellungsdatei, in einer alten Fassung im Verlauf der Versionsverwaltung, in einem Chat oder auf einem Foto vom Bildschirm.

Wo ein Geheimnis liegen darf und wo nicht

OrtGut oder schlechtWarum
Fest im QuellcodeSchlechtJede Person mit dem Code kennt es
In einem ChatSchlechtDer Chat bleibt lange gespeichert
In einer UmgebungsvariableBesserDer Code enthält es nicht
In einem Passwortspeicher des DienstesAm bestenNur bestimmte Programme dürfen es lesen

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

Die eine Regel für dieses Lab

Warnung

Such nur in deiner eigenen Kopie des Labs und nie in den Dateien anderer ohne Erlaubnis. Ein gefundenes fremdes Passwort benutzt man nicht, man meldet es. Die Geheimnisse im Lab sind erfunden. Du übst, sie zu finden, damit du eigene nicht verlierst.

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten und warte, bis es läuft. Auf Öffnen siehst du die Anwendung WrongSecrets. Lies dort nur die Erklärung von Challenge 0. Die Befehle unten erscheinen im Terminal neben dem Lab, wenn du auf Ausführen drückst.

Eine kleine Übungsdatei anlegen

Befehl
printf 'db_passwort = "kaffee2024"\n' > demo.txt

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

Nach dem Wort passwort suchen

Befehl
grep -n passwort demo.txt

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

Wie findet man ein Geheimnis in einer Datei?

Geheimnisse haben ein Muster: links steht ein Name wie passwort, key oder token, dann ein Gleichheitszeichen, rechts ein Text.

Das Werkzeug grep sucht ein Wort in einer Datei und zeigt jede Zeile damit. Mit -n zeigt es auch die Zeilennummer. Ein Suchprogramm für Geheimnisse tut nichts anderes, nur mit mehr Mustern.

Beispiel: Zeilen und ihr Befund

ZeileGeheimnis?Warum
passwort = "kaffee2024"JaName passt, Wert steht fest da
passwort = os.environ["PW"]NeinDer Wert kommt von außen
max_token = 100000NeinNur eine Zahl, ein Fehlalarm
url = "postgres://app:geheim@host/db"JaNutzer und Passwort stecken in der Adresse

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

Ein häufiger Fehler

Warnung

Viele denken, ein Geheimnis in Base64 sei versteckt. Base64 ist aber keine Verschlüsselung. Jeder kann es mit einem Befehl zurückübersetzen. Ein Geheimnis ist erst geschützt, wenn es gar nicht im Code steht.

Einen Base64-Text zurückübersetzen

Befehl
echo 'a2FmZmVlMjAyNA==' | base64 -d

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

Wo gehört ein Geheimnis hin?

Der Code liest das Geheimnis zur Laufzeit von außen: aus einer Umgebungsvariable oder aus dem Passwortspeicher des Dienstes. Im Code steht nur der Name.

Ist ein Geheimnis doch einmal veröffentlicht worden, löscht man es nicht nur aus dem Code. Man tauscht es sofort aus, denn es steht noch im Verlauf. Das nennt man ein Geheimnis erneuern.

Beispiel: ein Passwort von außen lesen

Code: python
import os

# Der Code kennt nur den Namen, nie den Wert.
passwort = os.environ["DB_PASSWORT"]

Weiterführend: Fehlalarme verringern

Ein Suchprogramm, das bei jeder Zahl Alarm schlägt, wird bald ignoriert. Überleg dir drei Zeilen, bei denen dein Programm ein Geheimnis meldet, obwohl keines da ist.

Wie würdest du die Regel ändern, ohne echte Geheimnisse zu übersehen?

Über dieses Lab und seinen Quellcode: WrongSecrets-Lab: fest einprogrammierte Geheimnisse finden und lernen, wohin Geheimnisse gehören

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.