Application Vulnerability Classes
An application vulnerability is rarely a magic exploit; it is a predictable consequence of trusting input that should not be trusted. The whole field organizes into a few recurring failure shapes. Injection is untrusted data crossing into an interpreter and being parsed as code. Client-side flaws abuse the trust a browser extends to your origin. Broken access control is the server acting on a request without checking the caller is allowed to. Server-side flaws are the server processing a request in a way the request author steers. Learn the shape and you can classify a bug you have never met by name.
This topic gives the mental model for each class: what the flaw is, why it happens, how to detect it in your own telemetry, and the fix that genuinely closes it rather than the one from folklore. That last part is where interviews live — naming a defense that works separates the engineer who understands the mechanism from the one who recites "add a WAF."
Topic map
- Injection attacks — data crossing into an interpreter; why parameterized queries beat escaping and WAFs; NoSQL, command, LDAP, template, and second-order injection; the defense hierarchy.
- Client-side vulnerabilities — the three XSS types, contextual output encoding and CSP, CSRF versus XSS, SameSite/HttpOnly cookies, CORS as a relaxation of the same-origin policy, clickjacking, and postMessage origin checks.
- Broken access control — authentication versus authorization, IDOR/BOLA and server-side ownership checks, why hiding a UI element is not a control, mass assignment, RBAC versus ABAC, and deny-by-default.
- Server-side vulnerabilities — SSRF and cloud metadata, insecure deserialization, XXE, path traversal, request smuggling, and TOCTOU races, unified by the idea of secure defaults.
Every class here reduces to a boundary the application failed to hold: between data and code, between origins, between callers, or between check and use. Hold the boundary and the class disappears.