The OWASP Top 10 (2025) Explained for Beginners and App Builders
The OWASP Top 10 is the most widely used list of web application security risks. All ten 2025 categories in plain English — from broken access control to supply chain failures — with what each looks like in an AI-built app and how to prevent it.
The OWASP Top 10 is a list of the most critical security risks for web applications, published by the Open Worldwide Application Security Project, a non-profit. It's the closest thing web security has to a standard checklist — auditors, frameworks and security tools all refer to it.
The current edition is OWASP Top 10:2025, released in late 2025. Here's every category in plain English, with what it looks like in an app built with AI tools.
A01: Broken Access Control
What it is: users can do or see things they shouldn't — read another user's data, reach admin pages, change someone else's settings. Still number one.
In AI-built apps: an API like /api/invoices/123 that returns any invoice to anyone logged in; a Supabase table without row-level security. This category now also includes server-side request forgery (SSRF) — tricking your server into fetching internal URLs.
Prevent it: check on the server, on every request, that this user may access this specific record. See IDOR explained, authentication vs authorization and Supabase RLS.
A02: Security Misconfiguration
What it is: insecure settings — debug mode on in production, default passwords, open storage buckets, overly permissive CORS, verbose error messages showing internals. It jumped to number two in 2025.
Prevent it: turn off debug output in production, lock down storage buckets, set security headers, review CORS settings, and keep dev, staging and production configs separate.
A03: Software Supply Chain Failures
What it is: risks from the code you didn't write — compromised or malicious npm packages, outdated dependencies with known holes, tampered build pipelines. New and broader in 2025.
In AI-built apps: an AI tool suggests a package that doesn't exist, and an attacker has registered it. See AI hallucinated a package.
Prevent it: use fewer, well-known dependencies, commit your lockfile, run npm audit, and read npm supply chain security.
A04: Cryptographic Failures
What it is: sensitive data not properly protected — passwords stored in plain text or with weak hashing, data sent without HTTPS, homemade encryption.
Prevent it: HTTPS everywhere (what is HTTPS?), passwords hashed with bcrypt or Argon2 (password hashing explained), and well-known libraries rather than custom crypto. See encryption at rest vs in transit.
A05: Injection
What it is: user input treated as code — SQL injection, command injection, and cross-site scripting (XSS).
Prevent it: parameterised queries or an ORM (SQL injection explained), escaping output (what is XSS?), and never passing user input to shell commands.
A06: Insecure Design
What it is: flaws in the design itself, not the code — a password reset that can be guessed, no limit on how many coupon codes you can try, a checkout that trusts the price sent by the browser.
Prevent it: think about abuse while planning features: "how could someone misuse this?" Add rate limits (what is rate limiting?), and never trust values the browser sends for prices or permissions.
A07: Authentication Failures
What it is: weaknesses in logging in — weak passwords allowed, no protection against password guessing, sessions that never expire, broken password resets.
Prevent it: use a proven auth library or provider (how to add login to an AI-built app), rate-limit login attempts, offer two-factor authentication, and get password resets right.
A08: Software or Data Integrity Failures
What it is: trusting data or code without checking it hasn't been tampered with — unsigned updates, accepting webhooks without verifying their signature, deserialising untrusted data.
Prevent it: verify webhook signatures (handling webhooks reliably), and only load scripts and updates from sources you trust.
A09: Security Logging and Alerting Failures
What it is: attacks go unnoticed because nothing is logged or nobody is alerted — you find out from your users, or never.
Prevent it: log logins, failed logins, permission errors and admin actions; set up alerts for unusual spikes. See structured logging and error monitoring for beginners.
A10: Mishandling of Exceptional Conditions
What it is: new in 2025. Apps that behave insecurely when something goes wrong — errors that leak internal details, failures that "fail open" (granting access when the permission check crashes), unhandled edge cases.
Prevent it: when in doubt, deny. Show users generic error messages and log details privately. Test what happens when the database is down, input is malformed, or a third-party API times out.
How to use this list
You don't need to become a security expert. Use the Top 10 as a review checklist before launch — or hand it to your AI tool:
Review this codebase against the OWASP Top 10:2025. For each category, list specific files and issues you find, starting with broken access control.
Then check its findings yourself. Pair it with our vibe coding security checklist.
The summary
- Broken Access Control 2. Security Misconfiguration 3. Software Supply Chain Failures 4. Cryptographic Failures 5. Injection 6. Insecure Design 7. Authentication Failures 8. Software or Data Integrity Failures 9. Security Logging and Alerting Failures 10. Mishandling of Exceptional Conditions.
Most real-world breaches of small apps come from the first two: someone could see data they shouldn't, or something was left misconfigured.
EasySpawn runs every server as its own isolated virtual machine and keeps secrets server-side, removing a class of misconfiguration risks — so your security effort can go where it matters most: access control in your own code. See how it works or join the waitlist.
Related: Vibe Coding Security Checklist · How to Run AI-Generated Code Safely · CSRF Explained · Content Security Policy
Keep reading
Do You Need a Cookie Banner? A Plain-English Guide for Small Apps
Cookie banners are required when you set non-essential cookies or trackers for EU and UK visitors — not for every cookie. What counts as essential, when you need consent, what a compliant banner must do, and how to avoid needing one at all.
What Is a JWT? JSON Web Tokens Explained Simply
Supabase, Firebase, Auth0, and Clerk all hand your app JWTs. What a JSON Web Token is, its three parts, why anyone can read it but nobody can forge it, how apps use it for login, and the mistakes AI-generated code makes with tokens.