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

Code-Review auf Sicherheitsfehler

Nach dieser Lektion: Ich kann mit einer Checkliste Code auf Sicherheitsfehler durchsehen und riskante Zeilen markieren.

Lektion, 55 Min.3 BefehleSQL-Injection-Lab: eine schwache Shop-Suche angreifen, die Abfrage reparieren und die Reparatur belegen

Was ist ein Code-Review auf Sicherheit?

Ein Sicherheits-Review ist das gezielte Lesen von Code, um Fehler zu finden, bevor sie ausgeliefert werden. Das ist wichtig, weil ein zweiter Blick Fehler sieht, die der Autor selbst übersieht.

Niemand liest jede Zeile mit gleicher Sorgfalt. Eine Checkliste und der Blick auf die geänderten Zeilen machen das Lesen schnell und verlässlich.

Am Ende dieser Lektion

Notiz

Ich kann mit einer Checkliste Code auf Sicherheitsfehler durchsehen und riskante Zeilen markieren.

Schlüsselwörter

BegriffWas er bedeutet
Code-Reviewdas Durchsehen fremden Codes vor der Übernahme
Diffdie Liste der Zeilen, die eine Änderung hinzufügt oder entfernt
Checklistefeste Fragen, die bei jedem Review gestellt werden
EingabeDaten, die von außen in das Programm kommen
Senkedie Stelle, an der ein Wert etwas bewirkt, etwa eine Abfrage

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

Folgen Sie jeder Eingabe bis zur Senke

Ein Review beginnt bei den Eingaben und folgt jedem Wert bis zur Senke. Unterwegs fragen Sie: Wird er geprüft? Wird er als Parameter übergeben? Wird er maskiert, bevor er angezeigt wird?

Fehlt eine Antwort, ist die Zeile verdächtig. Das Lesen nach Wegen ist schneller als das Lesen von oben nach unten.

Beispiel: eine Checkliste für ein Review

FrageWarnzeichen im Code
Kommt ein Wert in eine Abfrage?Text wird mit + oder f-String verbunden
Zeigt der Fehlerfall Einzelheiten?Die Meldung der Datenbank geht an den Besucher
Steht ein Geheimnis im Code?passwort = "..." im Text
Ist die Rechteprüfung vorhanden?Eine Aktion ohne Frage nach der Rolle
Wird zu viel geöffnet?Lauschen auf allen Adressen, Rechte für alle

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

Ein Diff lesen: nur neue Zeilen zählen

Code: python
diff = [
    "--- alt.py",
    "+++ neu.py",
    "-    sql = 'SELECT * FROM t WHERE id = ?'",
    "+    sql = 'SELECT * FROM t WHERE id = ' + wert",
    "     return db.execute(sql)",
]

# Zeilen mit + sind neu. Ändern Sie das Wort, nach dem gesucht wird.
nummer = 1
for zeile in diff:
    if zeile.startswith("+") and not zeile.startswith("+++"):
        if "+ wert" in zeile:
            print("Zeile", nummer, "ist verdächtig")
    nummer = nummer + 1

Ein Review am Shop des Labs

Der Shop des Labs ist ein kurzes Programm, an dem Sie die Checkliste üben. Die drei Runs zählen, wie oft ein Warnzeichen im Programm steht: Fehlertext an Besucher, Lauschen auf allen Adressen und der Filter auf öffentliche Artikel.

Sie ändern nichts. Jede Zahl ist ein Anlass zu fragen, ob die Stelle gewollt ist.

Die eine Regel

Warnung

Dieses Lab ist ein Shop, der absichtlich unsicher ist. Sehen Sie nur Ihre eigene, private Kopie an und nichts sonst. Sie hat keine Verbindung ins Internet.

Geht ein Fehlertext an den Besucher?

Befehl
docker exec app grep -c "str(error)" /tmp/app/app.py

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

Auf welchen Adressen lauscht der Shop?

Befehl
docker exec app grep -c "0.0.0.0" /tmp/app/app.py

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

Filtert die Suche auf öffentliche Artikel?

Befehl
docker exec app grep -c "public = 1" /tmp/app/app.py

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

Was die drei Zahlen sagen

Jeder Run gibt 1 aus. Der erste Treffer ist ein Fehlertext, der an den Besucher geht: ein Fund für den Bericht. Der zweite ist in einem Container üblich, aber Sie prüfen, ob er gewollt ist. Der dritte ist ein Filter, der gut ist.

Ein Review nennt auch, was gut ist. So wissen die Autorinnen und Autoren, was sie behalten sollen.

Ein häufiger Fehler

Warnung

Viele glauben, ein Review suche nur Fehler im geänderten Text. Das stimmt nicht. Eine kleine Änderung kann einen Schutz an ganz anderer Stelle aushebeln. Fragen Sie bei jeder Zeile, was sie für die Wege der Eingaben bedeutet.

Über dieses Lab und seinen Quellcode: SQL-Injection-Lab: eine schwache Shop-Suche angreifen, die Abfrage reparieren und die Reparatur belegen

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.