
Web Security with Python
Neem een werkende webdienst en maak hem moeilijk te misbruiken. Je slaat wachtwoorden zo op dat een lek ze niet prijsgeeft, houdt sessies en ondertekende tokens bij die niet te vervalsen zijn, valideert waar een verzoek om mag vragen, houdt cross-site verzoeken tegen, beantwoordt CORS correct omdat je weet wat een browser controleert, en houdt geheime sleutels uit je broncode. Je voert elke aanval uit op je eigen server en bewijst elke oplossing met een test.
Je hebt eerst HTTP with Python nodig: een JSON-API geschreven als een functie handle(request, state), cookies en een sessie op de server, Basic- en bearer-authenticatie, en tests die de handler rechtstreeks aanroepen. Python Fundamentals II helpt, maar is niet verplicht: je leest een paar klassen en schrijft er nooit zelf een.
Elke aanval richt zich op je eigen code, op het loopbackadres of in het geheugen; de sandbox heeft geen internet en geen browser. De browserregels achter CSRF en CORS zijn een klein model dat je zelf schrijft. Eén project, de leeslijst uit HTTP with Python, wordt tot en met het eindproject beveiligd.
12
hoofdstukken
64
lessen
33
oefeningen
13
projecten
De lessen staan in een aanbevolen volgorde, maar je kunt elke les openen.
Hoofdstuk 1
Wat er mis kan gaan
Hoofdstuk 2
Hashes, MAC's en willekeurige waarden
Hoofdstuk 3
Wachtwoorden veilig opslaan
Hoofdstuk 4
Sessies die standhouden
Hoofdstuk 5
Ondertekende tokens en geheime sleutels
Hoofdstuk 6
Wie wat mag, en hoe vaak
Hoofdstuk 7
Invoer die code wordt
- Accepteer alleen wat je verwachtoefening
- Begrens en normaliseer elk veldoefening
- Data die als instructies wordt gelezen
- Houd een regeleinde uit een headeroefening
- Verwijs alleen door naar je eigen siteoefening
- Houd een bestandsnaam binnen zijn mapoefening
- Zet tekst in een pagina, geen markupoefening
- Project: niets gaat ongecontroleerd over de grenseindproject
Hoofdstuk 8
Origins en cross-site verzoeken
- De browser die je gaat modelleren
- Origins en sitesoefening
- Welke cookies meegaanoefening
- Versturen is geen lezen
- Vervals een verzoek vanaf een naburige siteoefening
- Een token dat de andere pagina niet kan kennenoefening
- SameSite en de header Originoefening
- Project: verzoeken van ergens anderseindproject
Hoofdstuk 9
CORS
Hoofdstuk 10
HTTPS, certificaten en beveiligingsheaders
Hoofdstuk 11
Eindproject: maak de leeslijst veilig
Hoofdstuk 12