Web Security for Developers
Twelve lessons on the habits that keep injection, broken access control and leaked keys out of the code you write every day

About this course
A security course for people who already write web applications. You know how to query a database and how to put text on a page; this course is about what happens when someone sends you a value you did not expect, and about what you write instead.
Every lesson is built around a pair: the vulnerable version of a piece of code and the fixed one, in JavaScript, Node and PHP, with SQL where it belongs. Injection beyond the database, cross-site scripting in the contexts where escaping differs, password storage with the parameters current guidance actually names, sessions and tokens, the access-control check that is missing from most applications, CSRF, file uploads, redirects and SSRF, secrets and dependencies, logging that does not become a second breach, and error handling that does not narrate your stack to a stranger.
The course follows the OWASP Top 10 and the OWASP Cheat Sheet Series as a map, and the NIST digital identity guidelines for anything to do with passwords. It gives you no reason to invent cryptography or to write an authentication system from scratch — the whole point is that you do not have to.