Course 11 · Craft

Security
Assume somebody is trying.

The attacks that actually happen to ordinary web applications, and the defences that stop them — written as code you run, not as a list of warnings.

16Lessons
≈ 3hReading
16Playable now
XSSInjectionCSRFAuthSecretsSupply chain

0 of 16 lessons finished — nothing yet

The syllabus

16 lessons,
in the order they build on each other.

Start lesson one ↗
01

What are you defending?

Assets, attackers and trust boundaries — the five minutes that decide which of the next fifteen lessons matter to you.

≈ 11 min
02

Cross-site scripting

The three kinds, why escaping is contextual, and what CSP catches when you miss one.

≈ 14 min
03

Injection

SQL, shell, path and template: the same mistake in four languages, and the one fix.

≈ 13 min
04

Cross-site request forgery

How another site makes a request as you, and the two lines that stop it.

≈ 12 min
05

Passwords

Hashing that is meant to be slow, what a salt is for, and the login that does not leak who exists.

≈ 13 min
06

Authorisation

Deny by default, ownership checks, and the id in the URL that belongs to somebody else.

≈ 13 min
07

Sessions and tokens

Fixation, rotation, expiry, revocation — and the JWT mistakes that keep recurring.

≈ 12 min
08

Secrets

Where a key lives, how it rotates, and what to do the morning after one is pushed.

≈ 12 min
09

File uploads

Type checks that are not checks, the origin to serve them from, and the limits that stop a bill.

≈ 12 min
10

Server-side request forgery

When your server fetches a URL somebody else chose — and reaches your own network.

≈ 12 min
11

Dependencies and the supply chain

Lockfiles, audits, typosquats, and the build step that runs somebody else’s code.

≈ 12 min
12

Abuse and rate limiting

Brute force, enumeration, scraping — and limits that hurt attackers more than users.

≈ 12 min
13

Logging and detection

What to record, what must never be recorded, and noticing an attack while it happens.

≈ 11 min
14

Personal data

Collect less, keep it shorter, and the deletion request that arrives on a Friday.

≈ 12 min
15

Hardening a deployment

The configuration checklist: headers, cookies, TLS, CORS and error pages, in one pass.

≈ 11 min
16

Practice: review a small app

Nine problems hidden in one codebase. Find them, name them, fix them.

≈ 15 min