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

Abhängigkeiten prüfen: Risiken von Bibliotheken

Nach dieser Lektion: Ich kann die Risiken der Bibliotheken eines Projekts beurteilen und Geheimnisse im Code erkennen.

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

Warum sind fremde Bibliotheken ein Risiko?

Eine Abhängigkeit ist eine fremde Bibliothek, die Ihr Programm nutzt. Das ist wichtig, weil der größte Teil des Codes in einem Projekt nicht von Ihnen stammt und seine Fehler Ihre Fehler werden.

Eine alte Version mit bekannter Lücke reicht aus. Dazu kommen Geheimnisse, die jemand im Code vergessen hat. Beides lässt sich prüfen, bevor es Schaden anrichtet.

Am Ende dieser Lektion

Notiz

Ich kann die Risiken der Bibliotheken eines Projekts beurteilen und Geheimnisse im Code erkennen.

Schlüsselwörter

BegriffWas er bedeutet
Abhängigkeiteine fremde Bibliothek, die ein Projekt braucht; auf Englisch Dependency
Versionder Stand einer Bibliothek, etwa 2.19.0
Festlegengenau eine Version vorschreiben, mit ==; auf Englisch Pinning
Bekannte Lückeein veröffentlichter Fehler einer Version, den Angreifende nutzen können
Geheimnisein Passwort oder Schlüssel, der nicht im Code stehen darf

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

Eine festgelegte Version ist prüfbar

Eine Liste der Abhängigkeiten nennt Name und Version. Steht dort requests==2.19.0, ist die Version festgelegt. Steht nur requests, bekommt jede Installation, was gerade neu ist.

Nur eine festgelegte Version können Sie gegen eine Liste bekannter Lücken halten. Ohne Festlegung wissen Sie nicht, was läuft.

Beispiel: drei Zeilen einer Liste geprüft

ZeileFestgelegt?Bekannte Lücke?Urteil
flask==3.0.3JaNeinin Ordnung
requests==2.19.0JaJa, in dieser Versionaktualisieren
pillowNeinunbekanntVersion festlegen

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

Name und Version aus einer Zeile lesen

Code: python
zeile = "requests==2.19.0"
teile = zeile.split("==")

# Ändern Sie die Zeile in "pillow" und führen Sie den Block aus.
if len(teile) == 2:
    print("Name:", teile[0], "Version:", teile[1])
else:
    print("nicht festgelegt:", zeile)

Ein Geheimnis gehört nicht in den Code

Ein Geheimnis ist ein Passwort oder ein Schlüssel. Es im Code zu lassen ist gefährlich: Der Code wandert in Archive, Kopien und alte Versionen. Ein später gelöschtes Geheimnis bleibt dort stehen.

Der sichere Ort ist eine Einstellung außerhalb des Codes, etwa eine Umgebungsvariable oder ein Geheimnisspeicher. Ein offengelegtes Geheimnis wird sofort erneuert.

Eine verdächtige Zeile erkennen

Code: python
def sieht_aus_wie_geheimnis(zeile):
    klein = zeile.lower()
    if "passwort" in klein or "schluessel" in klein:
        return "=" in zeile and '"' in zeile
    return False

# Alle Zeilen sind erfunden. Probieren Sie eigene.
print(sieht_aus_wie_geheimnis('passwort = "abc123"'))
print(sieht_aus_wie_geheimnis("passwort = lies_umgebung()"))

Die Anwendung des Labs ansehen

Das Lab ist eine Anwendung, die Geheimnisse absichtlich schlecht versteckt. Sie suchen sie später selbst. Die zwei Runs fragen nur, ob die Anwendung läuft: Jede Anwendung hat solche Seiten, und jede ist Angriffsfläche.

Die erste Ausgabe ist ein kurzer Bericht, die zweite der Statuscode 200.

Die eine Regel

Warnung

Dieses Lab ist eine Anwendung, die absichtlich unsicher ist. Sehen Sie nur Ihre eigene, private Kopie an und nichts sonst. Sie hat keine Verbindung ins Internet.

Ist die Anwendung gesund?

Befehl
curl -s -w "\n" http://wrongsecrets:8080/actuator/health

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

Der Statuscode derselben Seite

Befehl
curl -s -o /dev/null -w "%{http_code}\n" http://wrongsecrets:8080/actuator/health

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 häufiger Fehler

Warnung

Viele glauben, ein Geheimnis sei weg, wenn man es aus der Datei löscht. Das stimmt nicht: Alte Versionen und Kopien enthalten es weiter. Erneuern Sie das Geheimnis, und legen Sie das neue außerhalb des Codes ab.

Ü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.