← All articles
Cybersec·September 10, 2026·10 min read

The OWASP Top 10 in Plain English

By Eduardo Dionisio

The OWASP Top 10 is the industry's most-watched list of web application risks. It is not a checklist of exotic exploits — it is the stuff real breaches are made of, and understanding it is table stakes for anyone writing web code.

The big three

  • Injection (SQL, OS, LDAP) — untrusted data reaches an interpreter. The classic SQL injection is the poster child. Defense: parameterized queries, never string-concatenate user input into a query.
  • Broken authentication — weak passwords, missing rate limits, session tokens that leak or don't expire. Defense: MFA, secure session management, lockout on brute force.
  • Cross-site scripting (XSS) — attacker-supplied script runs in another user's browser. Defense: output-encode everything, use a Content Security Policy.

The ones developers keep missing

  • Insecure Direct Object References (IDOR) — /orders/1234 with no check that you own order 1234. Defense: authorize on every object access, server-side.
  • Security misconfiguration — default credentials, debug endpoints in prod, verbose error messages. Defense: harden defaults, disable what you don't need.
  • SSRF — the server fetches a URL you control, reaching internal services. Defense: validate and allowlist outbound targets.

A concrete example

python
# VULNERABLE: string concatenation
cursor.execute("SELECT * FROM users WHERE name = '" + name + "'")

# SAFE: parameterized query
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

The fix is one line, but only if you know why the first version is dangerous. That's the value of the Cybersec arena: it drills the reasoning, not just the memorized answer. Think like the attacker, and the defense becomes obvious.