Security questions about AI-built apps
The questions builders ask most, answered in a sentence first, then explained.
- Is the Supabase anon key safe to expose?Yes. The anon (or publishable) key is meant to be in your site's code. It is only safe if Row Level Security protects every table, view, function and…
- How do I check if my Supabase tables are readable by anyone?Ask your own database for rows using only the public anon key, the way a visitor's browser does.
- Is my Lovable app secure?It can be, but apps from Lovable and other AI builders often ship with the same few holes: database tables anyone can read, secret keys in the browser,…
- Does verify_jwt protect my Supabase edge functions?No, not on its own. The public anon key is a valid JWT, so verify_jwt lets through anyone who copies it from your site.
- Which environment variables end up in my app's browser code?Any variable whose name starts with your framework's public prefix: VITE_ in Vite (Lovable, Bolt), NEXT_PUBLIC_ in Next.js, REACT_APP_ in Create React…
- Should I turn on email confirmation in Supabase?For most apps, yes. Without it, anyone can sign up with any email address, including one they don't own, and gets a signed-in session straight away that…
- Can users change their own plan or credits in my Supabase app?Often, yes. If your profiles table lets users update their own row and the policy doesn't limit which columns, a signed-in user can set their own plan,…
Looking for the full list of problems? See the Vibe-Code Top 10.