Hoofdstuk 1
Wat er mis kan gaan
Welkom bij de cursus
Hoi, ik ben Erik. Ik schrijf en onderhoud deze cursus, net als de rest van Python Land.
In
Wat je gaat beveiligen
| Hoofdstukken | Wat je dicht |
|---|---|
| 1 | nog niets: je benoemt wat er op het spel staat en bewijst één zwakke plek met een test |
| 2 en 3 | wachtwoorden die een kopie van de data prijsgeeft |
| 4 | |
| 5 | tokens die in de |
| 6 | een lezer die de boeken van een andere lezer verandert, en eindeloos raden naar logins |
| 7 | verzoekdata die te vroeg vertrouwd wordt |
| 8 en 9 | verzoeken die een andere website in de browser van een gebruiker start |
| 10 | gewoon HTTP |
| 11 | het eindproject: elf zwakke plekken, en geen hoofdstuk dat zegt waar je moet zoeken |
De
Eén regel
Val alleen aan wat van jou is.
Elke aanval in deze cursus is gericht op handle() in je eigen project, in het geheugen of op 127.0.0.1, het pl_sec.py, neemt geen hostnaam aan, dus je kunt het nergens anders op richten.
Dezelfde technieken werken tegen echte diensten. Ze gebruiken tegen een dienst die niet van jou is, zonder toestemming van de eigenaar, is op de meeste plaatsen strafbaar en gaat in tegen het doel van deze cursus.
Welke hiervan mag je aanvallen met wat deze cursus je leert?
Wat de site wel en niet kan bereiken
De sandboxes op Python Land hebben geen route naar het openbare internet. Geen enkele les benadert een echte website.
De site heeft ook geen browser. Dat doet er vanaf hoofdstuk 8 toe: welke cookies met een verzoek meegaan, en welke pagina welk antwoord mag lezen, zijn beslissingen die een browser neemt. Daarom schrijf je in hoofdstuk 8 en 9 zelf een klein model van een browser, regel voor regel, als gewone Python-
Hoofdstuk 8 en 9 gaan over wat een browser doet met cookies en andere sites. Wat speelt hier de browser?
Wat er in het project zit
reading_server.pyis de server zoals HTTP with Python hem achterliet, in een nagekeken kopie, zodat iedereen met dezelfde code begint.http_adapter.pyis het bestand dat je kent plus één methode,do_OPTIONS, die hoofdstuk 9 nodig heeft.wire.pyis ongewijzigd.In
tests/test_attacks.pykomen je aanvalstests, entests/helpers.pybevat kleine functies die die tests gebruiken.SECURITY.mdis devan zwakke plekken die je vindt. Hij begint met vier lege rijen. pl_sec.pyis een hulpprogramma dat voor deze cursus is geschreven. Het speelt de andere kant: een client, een dief, een aanvaller.
Je client, reading_client.py, gaat niet mee. Hoofdstuk 5 verandert de tokens die hij zou moeten sturen, en deze cursus gaat over de server.
Wat deze cursus van je nodig heeft
Je hebt HTTP with Python nodig:
handle(request, state), en de verzoek- en antwoord-waarmee die werkt; cookies en een sessie die op de server wordt bijgehouden;
Basic-inloggegevens bij de login en bearer-tokens bij schrijfacties, en wanneer een server 401 antwoordt en wanneer 403;
een
-digest uit hashlib,en secrets.token_urlsafe;tests die de handler rechtstreeks aanroepen en draaien met
python -m pytest -q.
Python Fundamentals II wordt aangeraden, maar is niet verplicht. http_adapter.py bevat een klasse. Je leest die één keer, en geen enkele oefening vraagt je er zelf een te schrijven.
Maak kennis met Monty
Monty is de leergids van Python Land en staat naast elke les. Vraag om een tweede uitleg, een hint die het antwoord niet weggeeft, of hulp bij het lezen van een foutmelding.
Als je bent ingelogd, krijg je met een gratis account 5 keer Monty-hulp per dag, gedeeld over alle cursussen. Een goede eerste vraag hier:
Wat controleerde mijn leeslijstserver, in gewone woorden, voordat hij een verzoek een boek liet veranderen?
De volgende les bekijkt die server door de ogen van iemand die hem wil misbruiken.
Met Guided krijg je tot 50 keer Monty-hulp per dag. Vragen, hints, foutuitleg, extra oefeningen en codefeedback delen dezelfde dagelijkse limiet. De teller laat zien hoeveel hulp je nog hebt en wanneer de limiet wordt vernieuwd. Elke les en gewone herkansing van een oefening blijft gratis.