Kapitel 1
Was schiefgehen kann
Willkommen im Kurs
Hallo, ich bin Erik. Ich schreibe und pflege diesen Kurs, zusammen mit dem Rest von Python Land.
In
Was du absicherst
| Kapitel | Was du schließt |
|---|---|
| 1 | noch nichts: Du benennst, was gefährdet ist, und beweist eine Schwachstelle mit einem Test |
| 2 und 3 | Passwörter, die eine Kopie der Daten verrät |
| 4 | |
| 5 | Tokens, die im |
| 6 | einen Leser, der die Bücher eines anderen Lesers ändert, und endlose Anmeldeversuche |
| 7 | Anfragedaten, denen zu früh vertraut wird |
| 8 und 9 | Anfragen, die eine andere Website im Browser eines Benutzers startet |
| 10 | einfaches HTTP |
| 11 | das Abschlussprojekt: elf Schwachstellen und kein Kapitel, das dir sagt, wo du suchen sollst |
Die
Eine Regel
Greif nur an, was dir gehört.
Jeder Angriff in diesem Kurs zielt auf handle() in deinem eigenen Projekt, entweder im Speicher oder auf 127.0.0.1, der pl_sec.py nimmt keinen Hostnamen entgegen, also kann es auf nichts anderes gerichtet werden.
Dieselben Techniken funktionieren gegen echte Dienste. Sie gegen einen Dienst einzusetzen, der nicht dir gehört, ohne die Erlaubnis seines Eigentümers, ist an den meisten Orten gesetzwidrig und widerspricht dem Sinn dieses Kurses.
Was davon darfst du mit dem angreifen, was dieser Kurs lehrt?
Was die Website erreichen kann und was nicht
Die Sandboxes auf Python Land haben keine Route ins öffentliche Internet. Keine Lektion kontaktiert eine echte Website.
Die Website hat auch keinen Browser. Das wird ab Kapitel 8 wichtig: Welche Cookies mit einer Anfrage mitgehen und welche Seite welche Antwort lesen darf, entscheidet ein Browser. Deshalb schreibst du in den Kapiteln 8 und 9 selbst ein kleines Modell eines Browsers, eine Regel nach der anderen, als einfache Python-
In den Kapiteln 8 und 9 geht es darum, was ein Browser mit Cookies und anderen Websites macht. Was spielt hier den Browser?
Was im Projekt ist
reading_server.pyist der Server, wie HTTP with Python ihn hinterlassen hat, in einer geprüften Kopie, damit alle mit demselben Code beginnen.http_adapter.pyist die Datei, die du kennst, plus eine Methode,do_OPTIONS, die Kapitel 9 braucht.wire.pyist unverändert.In
tests/test_attacks.pykommen deine Angriffstests, undtests/helpers.pyenthält kleine Funktionen, die diese Tests verwenden.SECURITY.mdist dieder Schwachstellen, die du findest. Sie beginnt mit vier leeren Zeilen. pl_sec.pyist ein Hilfsprogramm, das für diesen Kurs geschrieben wurde. Es spielt die andere Seite: einen Client, einen Dieb, einen Angreifer.
Dein Client, reading_client.py, wird nicht übernommen. Kapitel 5 ändert die Tokens, die er senden müsste, und in diesem Kurs geht es um den Server.
Was dieser Kurs von dir braucht
Du brauchst HTTP with Python:
handle(request, state)und diefür Anfrage und Antwort, mit denen es arbeitet; Cookies und eine Session, die auf dem Server gehalten wird;
Basic-Zugangsdaten bei der Anmeldung und Bearer-Tokens bei Schreibzugriffen, und wann ein Server mit 401 antwortet und wann mit 403;
einen
-Digest aus hashlib,und secrets.token_urlsafe;Tests, die den Handler direkt aufrufen und mit
python -m pytest -qlaufen.
Python Fundamentals II wird empfohlen, ist aber keine Voraussetzung. http_adapter.py enthält eine Klasse. Du liest sie einmal, und keine Übung verlangt, dass du selbst eine schreibst.
Lerne Monty kennen
Monty ist der Lernbegleiter von Python Land und steht dir neben jeder Lektion zur Verfügung. Bitte um eine weitere Erklärung, um einen Hinweis, der dir nicht die Lösung verrät, oder um Hilfe beim Lesen einer Fehlermeldung.
Wenn du angemeldet bist, enthält dein kostenloses Konto 5 Monty-Hilfen pro Tag, gemeinsam für alle Kurse. Eine gute erste Frage an dieser Stelle:
Was hat mein Leselisten-Server geprüft, bevor er eine Anfrage ein Buch ändern ließ, in einfachen Worten?
Die nächste Lektion betrachtet diesen Server mit den Augen von jemandem, der ihn missbrauchen will.
Mit Guided erhältst du bis zu 50 Monty-Hilfen pro Tag. Fragen, Hinweise, Fehlererklärungen, zusätzliche Übungen und Code-Feedback teilen sich dasselbe Tageslimit. Der Zähler zeigt, wie viel noch übrig ist und wann das Limit erneuert wird. Jede Lektion und jeder normale erneute Übungsversuch bleibt kostenlos.