Webhook verification done right
Signature, timestamp, idempotency and fast response. Exactly the checklist I needed.
Browse
Design and build APIs that authenticate correctly, authorise every object, validate input, limit abuse and stay inventoried, guided by the OWASP API Top 10
Created by Jonas Lindqvist
APIs now carry most application traffic, and they fail in their own particular ways. An API that returns another customer's order when you change an id, accepts a role field it should ignore, or lets one client exhaust the database is not unusual. The OWASP API Security Top 10 exists because these problems are common.
We secure a sample REST API for a project management product, written in Python with FastAPI and in TypeScript with Express. Each lesson adds a defence and an automated test that proves it works. The same principles apply to GraphQL and gRPC, and I point out the specific differences where they matter.
You should be comfortable building HTTP APIs. No prior security specialism is needed.
Application security engineer helping developers write, review and test secure code
I sit between development and security teams, reviewing code, tuning scanners and teaching developers how common vulnerabilities actually appear in real code bases.
My courses are written for developers first. We read vulnerable code, exploit it in a safe lab, fix it and add a test or rule so it stays fixed. Examples use Python, JavaScript and Java because that is what most teams I meet write.
I focus on the OWASP Top 10, API security, authentication, and tooling such as Semgrep, CodeQL and secret scanners. My aim is that security becomes part of your normal review, not a separate step at the end.
Signature, timestamp, idempotency and fast response. Exactly the checklist I needed.
Resolving access through the caller in the query itself changed how we write every handler.
We were not checking the audience claim. Fixed the same day, with the four rejection tests from the JWT lesson.
Token bucket explanation and Redis setup were very practical for our multi instance API.
Every defence comes with a test, which made it easy to bring into our codebase. GraphQL section was short.
Separating input models from database models closed a hole we did not know we had.
Accurate and useful, but our services are in Go so I had to translate examples.