Skip to main content
Cybersecurity

Web Security Tutorial with Examples.

Web security tutorial for the OWASP Top 10, fix-side: broken access control, CSRF, SSRF, file uploads, misconfiguration and brute-force logins, each test-pinned.

Beginner

Start here — no prior experience needed

3 lessons

Intermediate

For developers with core concepts down

3 lessons

Also part of Web Security (OWASP Top 10, fix-side)

Taught in other topics. Each link opens the lesson in its home topic.

12 lessons
python intermediate
5 min read

Run real attacks against local Python code and fix them: SQL injection, shell injection, path traversal, weak tokens and password hashes.

sql advanced
5 min read

Secure PostgreSQL with real output: roles, GRANT and REVOKE, column privileges, the locked public schema, row-level security, and SQL injection.

javascript advanced
5 min read

Learn how to protect JavaScript applications from XSS, CSRF, prototype pollution, insecure JWT handling, and other common web security vulnerabilities.

java advanced
5 min read

Secure Java coding by running it: allowlist validation, SQL injection vs PreparedStatement, PBKDF2 hashing, SecureRandom, AES-GCM and KeyStore.

bash intermediate
5 min read

Write secure Bash scripts — safe temp files with mktemp, avoiding command injection, handling secrets, and setting file permissions.

fastapi intermediate
5 min read

Hash passwords with pwdlib and Argon2, log in through FastAPI's OAuth2 password flow, issue JWTs, and see wrong, expired and tampered tokens get 401s.

fastapi intermediate
5 min read

Guard FastAPI routes with role dependencies, run real CORS preflights that pass and fail, and load config from env vars and .env with pydantic-settings.

java intermediate
5 min read

Secure a Spring Boot 3 API and probe it with curl: default lockdown, SecurityFilterChain rules, BCrypt, 401 vs 403, @PreAuthorize and tests.

api-testing intermediate
5 min read

Extend the local test API with two auth schemes and catch the assumption that 'wrong token' and 'no token' return the same status code — they don't, and mixing them up hides real bugs.

c advanced
5 min read

Catch C memory bugs before they ship: AddressSanitizer, _FORTIFY_SOURCE, stack canaries, -Wformat-security, and safe snprintf, fgets and overflow checks.

llm advanced
5 min read

Indirect prompt injection, excessive agency, and insecure output handling — the OWASP-style risks that survive input/output guardrails.

devsecops intermediate
5 min read

Pin an old requests release, read the advisories pip-audit reports, build a CycloneDX SBOM with Syft, scan it with Grype, then bump the pin to a clean run.