Security
The part AI gets wrong by default — secrets, auth, database rules, and input validation — fixed with a checklist you can follow.
Security essentials
The handful of security things that go wrong in AI-built apps, and how to ask for them done right.
5 cards →Is your vibe coded app actually secure?
Six questions on the part AI gets wrong by default — secrets, auth, database rules, and input validation. This is the quiz worth taking before you ship. No sign-up, instant score, and you can share how you did.
-
Q1 What's the single most common security mistake in AI-built apps?Why
The AI 'just makes it work' by calling the paid API straight from the browser with the key inline. Anyone can read it. And no — putting it in a variable or minifying the bundle doesn't hide it.
-
Q2 You've added a login screen. Is the app secure?Why
AI-built apps routinely get the login screen right and the permission checks wrong, so any logged-in user can read anyone's records. Auth and authz are different problems — and hand-rolling authentication gets the hard parts subtly wrong.
-
Q3 Your app validates input in the browser. What's missing?Why
Client-side validation is a UX nicety, not a defence. Anyone can call your endpoint directly and send whatever they like — so never trust what comes from the browser.
-
Q4 Why is pasting user input into a query string dangerous?Why
String-built queries are how injection happens, and AI will happily write them. Parameterised queries are the fix — along with database rules so each user can only read and write their own data.
-
Q5 Your app works in development. What's the risk in deploying that exact config?Why
This is the quiet class of holes — not missing code, but settings left in their development state. Log detailed errors privately; don't send stack traces to users.
-
Q6 'It works when I use it.' What does that prove about security?Why
You use the app as intended; an attacker doesn't. AI reliably produces code that works in a demo and is wide open in production — and the gaps usually come in clusters, so fixing one doesn't mean the rest are fine.