Antoine Duno
Founder of ZeriFlow · 10 years fullstack engineering · About the author
Key Takeaways
- Lovable, Bolt, and v0 each have different security defaults. Here's exactly what each platform ships out of the box, what's missing, and the 10-minute security fix checklist for each.
- Includes copy-paste code examples and step-by-step instructions.
- Free automated scan available to verify your implementation.
Lovable, Bolt, and v0 each ship apps fast. Each platform has a different default stack, a different approach to code generation, and a different set of security defaults. What they share is a common set of blind spots — areas where every vibe-coded app needs manual attention before going live.
This guide covers what each platform gives you, what it misses, and a platform-specific checklist for each.
Lovable — What It Gives You, What It Misses
Is your site actually secure?
Run a free check — 60 seconds
Typical stack: React frontend + Supabase backend + Vercel deployment
What Lovable handles well: Lovable generates clean component architecture, handles routing, and produces readable React code. The Supabase integration is functional — you get database queries and auth flows that work.
What Lovable misses:
The most critical gap is Row Level Security. Lovable will set up Supabase tables and generate queries, but it does not configure RLS policies. By default, your database tables may be accessible to any authenticated (or unauthenticated) user.
Security headers are not configured — they require next.config.js modifications that Lovable does not make.
CORS on edge functions or serverless functions is set to permissive defaults.
Rate limiting on authentication endpoints is not implemented.
Lovable security checklist:
- 1Enable RLS on all tables. In the Supabase dashboard, enable RLS on each table and write policies for SELECT, INSERT, UPDATE, and DELETE that validate
auth.uid() = user_id.
- 1Audit the anon key scope. In Supabase Settings > API, restrict the anon key to your production domain. Verify no queries use the service_role key client-side.
- 1Add security headers. Add the
next.config.jsheaders snippet to your project.
- 1Configure Auth settings. Enable email enumeration protection, set your redirect URL whitelist, and review rate limiting settings in Supabase Authentication > Settings.
- 1Run a ZeriFlow scan. Deploy to Vercel and scan at zeriflow.com/free-scan to catch headers, TLS, and CORS issues automatically.
Bolt — What It Gives You, What It Misses
Typical stack: Node.js/Express backend or Vite frontend + various APIs + cloud deployment
What Bolt handles well: Bolt is strong at generating full-stack JavaScript apps quickly. The backend logic is generally well-structured, and API integration code is solid.
What Bolt misses:
Debug endpoints are the most distinctive risk in Bolt-generated apps. Bolt sometimes includes /health, /debug, /status, or /info endpoints that expose application internals — environment information, dependency versions, or configuration details. These are useful in development and dangerous in production.
CORS is frequently set to wildcard in the generated Express configuration.
Security headers are not added to Express apps by default.
Error handlers tend to return full error objects including stack traces.
Bolt security checklist:
- 1Audit and remove debug endpoints. Search for routes that match
/debug,/health,/info,/status,/metrics. Either remove them or add authentication.
- 1Fix CORS. Replace
origin: '*'with your production domain.
- 1Add helmet.js for headers. For Express apps,
npm install helmetand addapp.use(helmet())early in your middleware stack.
import helmet from 'helmet'
app.use(helmet({
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'"],
},
},
}))- 1Replace verbose error handlers. Return generic messages to clients, log real errors server-side.
- 1Run a ZeriFlow scan. Catch remaining header and CORS issues automatically before launch.
v0 (Vercel) — What It Gives You, What It Misses
Typical stack: Next.js + shadcn/ui + Vercel + various backend integrations
What v0 handles well: v0 generates excellent React components. The code quality is high, the shadcn/ui integration is clean, and the Next.js structure is correct.
What v0 misses:
Content Security Policy is genuinely difficult to configure alongside shadcn/ui because of how inline styles work in Radix UI primitives. v0 does not tackle this.
Cookie security flags are not configured unless you specifically prompt for them.
API route authentication is skipped unless requested. v0 focuses on the UI layer, so backend API security is even less likely to be addressed.
v0 security checklist:
- 1Add security headers (excluding CSP initially). Add X-Frame-Options, X-Content-Type-Options, HSTS, and Referrer-Policy to
next.config.js. For CSP, start with report-only mode to understand what you need to allow.
- 1Audit every file in `app/api/`. Add authentication checks to every route that handles user data or mutations.
- 1Fix cookie configuration. Verify HttpOnly and Secure flags are set in your NextAuth or custom session cookie configuration.
- 1Review client-side data fetching. v0 sometimes generates client-side fetches to sensitive API routes. These need authentication headers, not just session cookies.
- 1Run a ZeriFlow scan. The scan will flag missing headers and surface exposed API endpoints that respond without authentication.
What All Three Platforms Miss
Email authentication (SPF/DKIM/DMARC): None of the three platforms configure DNS email authentication records. If your app sends transactional email, missing SPF, DKIM, and DMARC records means your emails land in spam and your domain can be spoofed in phishing attacks.
Security headers: All three platforms miss security headers consistently. This is the single most universal finding in vibe-coded app security reviews. The fix is always the same: add a headers configuration to your deployment.
TLS configuration: All three platforms rely on their deployment infrastructure for TLS. Verify that HSTS is enabled, that HTTP redirects to HTTPS, and that your TLS version does not support legacy protocols.
Verify Your App in 60 Seconds
Before launch, deploy your app and run a free scan at zeriflow.com/free-scan. The scan covers the issues common to all three platforms:
- Security headers (the number one finding across all vibe-coded apps)
- TLS configuration and HTTPS enforcement
- CORS policy analysis
- Cookie security flags
- Exposed endpoints and sensitive paths
The scan takes 60 seconds and gives you a prioritized list of what to fix. Use the platform-specific checklists above for the manual fixes, and use ZeriFlow to catch the deployment-level issues that are easy to miss in a code review.
A score of 80 or above means you have addressed the major automated-scan findings. Combined with the platform-specific checklist, that is a solid security baseline before your first real user signs up.