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

Geheimnisse aus dem Code halten

Nach dieser Lektion: Ich kann Geheimnisse aus dem Code heraushalten und Eingaben prüfen.

Lektion, 40 Min.Keine Befehle

Ein Schlüssel im falschen Ordner

Eine Entwicklerin lädt ihren Code in ein Repository, damit das Team ihn sieht. In einer Datei steht der Schlüssel zum Zahlungsdienst.

Nach wenigen Stunden wird er von Fremden benutzt. Die Firma zahlt für Leistungen, die sie nie bestellt hat.

Diese Lektion zeigt, wie man das verhindert. Alle Schlüssel hier sind erfunden und überall ungültig.

Am Ende dieser Lektion

Notiz

Ich kann Geheimnisse aus dem Code heraushalten und Eingaben prüfen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
GeheimnisEin Wert, den nur berechtigte Personen kennen dürfenPasswort, API-Schlüssel
API-SchlüsselEin Code, mit dem ein Programm einen Dienst benutzen darf
UmgebungsvariableEin Wert, den das System dem Programm von außen gibt
RepositoryDer Ort, an dem der Code und seine Geschichte liegen
EingabeprüfungEingaben kontrollieren, bevor man mit ihnen arbeitet (englisch: validation)

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

Geheimnisse gehören nicht in den Code

Code wird kopiert, geteilt und hochgeladen. Er liegt in Repositories und auf vielen Laptops.

Steht ein Passwort im Code, kennt es jede Person, die den Code sieht. Auch später noch: Die Geschichte eines Repositories bewahrt alte Fassungen auf.

Deshalb steht im Code nur, wo das Geheimnis zu finden ist, nie das Geheimnis selbst.

Probieren Sie es aus: Code nach Geheimnissen durchsuchen

Code: bash
# Eine kleine Konfigurationsdatei, wie sie versehentlich im Code landen kann
echo 'SHOP_NAME = "Beispiel-Laden"' > konfig.py
echo 'ZAHLUNG_SCHLUESSEL = "demo_ERFUNDEN_123456"' >> konfig.py
echo 'DATENBANK_PASSWORT = "ErfundenesPasswort!"' >> konfig.py

# Suchen Sie nach Zeilen mit Wörtern, die auf ein Geheimnis hindeuten
grep -n -i -E "schluessel|passwort|token" konfig.py

# Suchen Sie jetzt auch nach "secret".

Umgebungsvariablen

Eine Umgebungsvariable ist ein Wert, den das System dem Programm beim Start mitgibt.

Auf Ihrem Laptop setzen Sie sie selbst. Auf dem Server setzt sie die Person, die ihn betreut, oder ein Werkzeug für Geheimnisse.

Der Code liest nur den Namen. Der Wert steht nie im Repository.

Ausprobieren: ein Schlüssel aus der Umgebung

Code: bash
# Der Wert kommt von außen und steht nicht im Code
export ZAHLUNG_SCHLUESSEL="demo_ERFUNDEN_123456"

python3 -c "import os; print('Schlüssel gesetzt:', 'ZAHLUNG_SCHLUESSEL' in os.environ)"
python3 -c "import os; print('Länge:', len(os.environ['ZAHLUNG_SCHLUESSEL']))"

# Entfernen Sie die export-Zeile. Was meldet das Programm nun?

Ein häufiger Fehler

Warnung

Viele denken, ein privates Repository sei sicher genug für Passwörter. Es wird aber oft geteilt, kopiert oder später geöffnet. Halten Sie Geheimnisse aus dem Code heraus, denn ein gelesenes Geheimnis lässt sich nicht zurückholen. Ist eines doch hochgeladen, tauschen Sie es sofort aus und melden Sie es.

Eingaben prüfen

Alles, was von außen kommt, kann falsch sein. Ein Tippfehler, ein leeres Feld, ein Minuszeichen.

Prüfen Sie Eingaben, bevor Sie mit ihnen arbeiten. Erlauben Sie, was Sie erwarten, und lehnen Sie den Rest ab.

Beispiel: Eine Bestellmenge ist eine ganze Zahl von 1 bis 100. Alles andere wird abgelehnt.

Ein Beispiel: Mengen in einer Bestellung

EingabeGültig?Grund
5jaGanze Zahl im Bereich
0neinKleiner als 1
-3neinKeine reine Ziffernfolge
fuenfneinKein Zahlenwert
500neinGrößer als 100

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

Im Berufsalltag

Tipp

Viele Teams nutzen Werkzeuge, die vor jedem Hochladen nach Geheimnissen suchen. Bleibt trotzdem eines im Code, melden Sie es sofort, auch wenn es Ihr eigener Fehler war. Ein schneller Hinweis ist besser als ein verschwiegener Fehler.

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.