The Pre-Launch Security Checklist for AI-Built Apps
You built something real with AI. Now it's almost live. Before you share that link, run through this checklist — every item on it represents a real vulnerability class found routinely in vibe-coded apps.
This checklist covers the eight security domains that matter most for apps built with AI coding tools. Each section explains what to look for manually — and notes where VibeSafe automates the check for you.
Secrets & Credential Management
- Critical No API keys, tokens, or passwords hardcoded in JavaScript files or frontend source code
-
Critical
.envfile is in.gitignoreand has never been committed to version control - Critical Stripe secret key, OpenAI key, Supabase service role key are only used server-side — never in the browser
- High Git history does not contain any previously committed secrets (even deleted files can be recovered from history)
- High Different API keys are used for development and production environments
Authentication & Authorization
- Critical Every API route that reads or modifies user data requires a valid authenticated session
- Critical Users cannot access or modify other users' data (no IDOR — Insecure Direct Object References)
- High Admin routes are protected by a separate admin role check, not just authentication
- High Session tokens expire and are invalidated on logout
- Medium Password reset flow does not expose user account existence (no "email not found" error)
API Security & Rate Limiting
- Critical Login endpoint is rate-limited (max attempts before lockout or CAPTCHA)
- High Password reset and email verification endpoints are rate-limited
- High Any endpoint that sends an email or SMS is rate-limited to prevent spam abuse
- High Payment and checkout endpoints have abuse prevention in place
- Medium API endpoints return appropriate error codes — not stack traces or database errors
Input Validation & Injection Prevention
- Critical All database queries use parameterized statements or an ORM — no raw string interpolation with user input
- High User-supplied data is validated on the server (not just client-side)
- High User input displayed in the UI is escaped to prevent Cross-Site Scripting (XSS)
- Medium File names and paths from user input are sanitized before use in filesystem operations
CORS & Cross-Origin Configuration
-
Critical
CORS is not set to
*(wildcard) in production — only specific allowed origins are listed - High CORS configuration differs between development and production
-
Medium
credentials: trueis not used alongside wildcard CORS
File Upload Security
- Critical File uploads validate MIME type server-side (not just file extension)
- High Maximum file size is enforced
- High Uploaded files are not served from the same domain where they could execute scripts
- High Executable file types (.exe, .sh, .php, .py) are rejected
HTTP Security Headers
-
High
Content-Security-Policyheader is set to restrict script sources -
High
X-Frame-Options: DENYorSAMEORIGINis set to prevent clickjacking -
High
Strict-Transport-Security(HSTS) header is set -
Medium
X-Content-Type-Options: nosniffis set -
Medium
Referrer-Policyis set appropriately
Dependencies & Third-Party Code
-
High
No npm/pip packages with known critical CVEs in
package.jsonorrequirements.txt - Medium No abandoned or unmaintained packages in the dependency tree
- Medium No packages installed that are not actually used by the application
Frequently Asked Questions
Before You Share That Link
Going through this checklist manually takes hours and requires knowing where to look. Most vibe coders skip it — not because they don't care, but because they don't know what they don't know. That's the gap VibeSafe closes.
A VibeSafe Pre-Launch Audit runs through every item on this checklist automatically and delivers a prioritized report within 24 hours. You get one clear list of what to fix, written in plain language you can hand to your AI coding tool.
Get Your Pre-Launch Audit
Let VibeSafe check every item on this list before your first real user shows up.
Start at VibeSafe →