What Is the OWASP Top 10? Web Security Risks Explained
The OWASP Top 10 is a ranked list of the most critical web application security risks. What's on it, why it matters, and how teams use it.
The OWASP Top 10 is a periodically updated list, published by the Open Web Application Security Project, ranking the most critical security risks facing web applications. It’s not a checklist of specific bugs — it’s a set of risk categories, each broad enough to cover many concrete vulnerabilities, ordered roughly by how common and how damaging they tend to be in real-world applications. For most engineering teams, it’s the default reference point for what “web application security” means in practice.
Why a top-10 list at all
Security is a huge surface area, and most teams don’t have a dedicated security engineer reviewing every line of code. The OWASP Top 10 exists to concentrate limited attention on the risks that account for the overwhelming majority of real breaches — broken access control and injection flaws show up far more often in incident reports than exotic cryptographic attacks. It’s a triage tool: if you can only harden a handful of things, harden these first.
The categories are also useful as a shared vocabulary. When a security review flags “broken access control,” everyone on the team knows roughly what that means and where to look, without needing a shared history of every possible attack technique.
The categories, at a glance
The exact list is revised periodically as attack patterns shift, but the categories have stayed conceptually stable for years. The recurring themes are:
- Broken access control. Users able to act outside their intended permissions — viewing another account’s data by changing an ID in a URL, or reaching an admin endpoint without an admin role. This is consistently the most common category in real audits.
- Cryptographic failures. Sensitive data transmitted or stored without adequate protection — plaintext passwords, weak hashing, or missing HTTPS where it’s needed.
- Injection. Untrusted input executed as code or query logic, the umbrella that includes SQL injection and command injection.
- Insecure design. Security flaws baked into the architecture itself, not fixable by a patch — the kind of thing that requires rethinking a flow, not adding a check.
- Security misconfiguration. Default credentials left in place, verbose error messages leaking internals, unnecessary services left exposed.
- Vulnerable and outdated components. Shipping a library with a known CVE because nobody tracked its version. This is where software supply chain security practices matter most.
- Identification and authentication failures. Weak session handling, predictable tokens, missing protection against credential stuffing.
- Software and data integrity failures. Trusting updates, plugins, or CI/CD pipelines without verifying their integrity — the class of risk behind many supply-chain compromises.
- Security logging and monitoring failures. Breaches that go undetected for months because nothing was watching for the signs.
- Server-side request forgery. A server tricked into making requests on an attacker’s behalf — see what SSRF is for the mechanics.
How the categories map to specific vulnerabilities
It helps to see the relationship between a broad OWASP category and the concrete bug it covers:
| OWASP category | Example concrete vulnerability |
|---|---|
| Injection | SQL injection, command injection |
| Broken access control | Insecure direct object reference, missing function-level checks |
| Identification and authentication failures | Session fixation, weak password reset flows |
| Security misconfiguration | Default admin credentials, exposed debug endpoints |
| Cryptographic failures | Storing passwords with a fast hash instead of bcrypt or Argon2 |
Two categories that used to stand on their own — cross-site scripting and cross-site request forgery — are now folded into broader buckets (injection and broken access control, respectively) in newer revisions of the list. The underlying vulnerabilities didn’t disappear; the taxonomy just consolidated around root cause rather than symptom.
How teams actually use it
The Top 10 isn’t a certification you pass once. It shows up in a few recurring workflows:
- Secure code review checklists. Reviewers use the categories as prompts: does this endpoint check authorization, does this query parameterize input, is this response leaking a stack trace.
- Static and dynamic analysis tooling. Most SAST and DAST tools map their findings back to OWASP categories, which makes scan results easier to prioritize and report on.
- Threat modeling. Early in a design, the list is a prompt for “what could go wrong here” across access control, input handling, and configuration — complementary to a broader threat modeling exercise.
- Onboarding. New engineers who’ve never done a security review get a compact, memorable framework rather than an open-ended “think like an attacker.”
What it doesn’t cover
The list is deliberately scoped to web application risks, so it says little about network-level attacks, physical security, or the security of infrastructure itself — a misconfigured WAF or an exposed cloud storage bucket is a real risk that falls partly outside its remit. It’s also a snapshot of common risks, not an exhaustive taxonomy: a novel attack class can exist well before it earns a line item. Treat it as a floor, not a ceiling, for what “secure” means.
It’s also worth remembering the list ranks risk by prevalence and impact across a broad sample of applications — your specific application’s actual risk profile might weight things differently. A public-facing API with no user accounts cares less about session handling and more about rate limiting and input validation; an internal admin tool might have the opposite priorities.
The takeaway
The OWASP Top 10 is a prioritized list of the web’s most common and damaging security risk categories — broken access control, injection, cryptographic failures, and misconfiguration chief among them. It’s not a complete security program on its own, but it’s a well-tested starting point for code review, tooling, and threat modeling, and a shared vocabulary that makes security conversations across a team faster and more precise.
Tagged
Keep reading
Chisato · · 5 min read Refresh Token Rotation Explained: Safer Long Sessions
Refresh token rotation issues a new refresh token on every use and revokes the old one, so a stolen token gets caught on reuse. How it works and pitfalls.
Chisato · · 5 min read What Is DPoP? Sender-Constrained OAuth Tokens Explained
DPoP binds OAuth access tokens to a client-held key, so a stolen token is useless without the private key. How proofs work and when to use DPoP.
Chisato · · 5 min read What Is an Open Redirect? Risks and How to Prevent It
An open redirect lets attackers use your domain to send users to any URL. How open redirect vulnerabilities work, why they matter, and how to fix them.