LaunchGuard Launch ScanExample report
D
64/99

Security score · higher is better

Fix before launch

We found issues to fix before you send real traffic.

Domain
Your App
Scanned
May 20, 2026
Scan type
External scan · no login

14 launch security areas checked

9Passed
3Warnings
1Failed
1Not tested

Findings

1Must-fix1Review1Hardening2Notes

99 is the highest score for this external scan.

Fix before launch. Fix must-fix items first, then re-scan after deploying changes.

Security score breakdown

12 areas

Every public-surface area this scan graded. “Pass” means nothing was flagged there — not a full security review.

Exposed files & secrets

Pass

No exposed .env, .git, or known secret files detected

High impact · 13 pts

Frontend JS secrets

Pass

No private secrets detected in scanned frontend assets

Medium impact · 11 pts

Supabase exposure

Pass

No obvious public Supabase table exposure detected

High impact · 13 pts1 finding

Public API data exposure

Fail

1 issue to fix before launch — see findings below

High impact · 13 pts1 finding

CORS

Pass

No dangerous CORS behavior detected

Medium impact · 8 pts

Cookies & sessions

Pass

No insecure session cookies observed

Medium impact · 7 pts

Error & debug leakage

Pass

No stack traces or debug errors detected

Medium impact · 7 pts

Security headers

Warn

1 issue to review — see findings below

Medium impact · 10 pts1 finding

Open ports & infrastructure

Pass

No unexpected public ports detected on the common fixed list

Medium impact · 7 pts

HTTPS / TLS

Pass

No insecure transport or mixed-content issues detected

Low impact · 4 pts

Route exposure

Pass

No obviously exposed admin or sensitive routes detected

Low impact · 2 pts

Source maps

Not tested

Not reached — the scan budget was hit before source maps were checked. Re-run to test this area.

Low impact · not tested

Some areas could not be tested during this scan. This can happen if the site blocked requests, timed out, or the scan budget was reached. Re-run the scan to try again.

Must fix before launch (1)

Critical and high-severity issues. Fix these before sending traffic.

Public API returns user or business data

API exposurehttps://yourapp.vercel.app/api/profiles
High

/api/profiles returned JSON containing personal fields without authentication. If this isn't meant to be public, require a login first.

Show details
Affectedhttps://yourapp.vercel.app/api/profiles

Evidence

status
200
sensitive fields
email, name, user_id

Why it matters

Public API routes that return user, customer, or admin data without a login let anyone read information meant to be private.

Recommendation

Require authentication and authorization before returning this data, and confirm anonymous requests receive 401 or 403.

Paste this into Claude Code, Cursor, or your AI coding tool

Review this public API route. Confirm whether it should be accessible without authentication. If it returns user, customer, case, payment, or admin data, require authentication and authorization before returning the response. Add tests that unauthenticated requests receive 401 or 403.

Should fix (1)

Medium-severity issues worth resolving before a wider launch.

Missing Content-Security-Policy

Security headers
Medium

A Content-Security-Policy helps prevent cross-site scripting and content injection. It wasn't set.

Show details

Why it matters

Security headers are the browser-level guardrails that block common attacks like cross-site scripting and clickjacking.

Recommendation

Add a Content-Security-Policy header. Start in report-only mode, then enforce once nothing legitimate is blocked.

Paste this into Claude Code, Cursor, or your AI coding tool

Add a Content-Security-Policy to my app. Propose a sensible starting policy for my framework, explain how to test it in report-only mode first, then enforce it.

Nice to have / hardening (1)

Low-severity and informational items — not launch blockers.

Supabase detected — no public table exposure found

Database & auth risks
Info

No obvious public Supabase table exposure detected from this unauthenticated scan. Supabase public anon key detected. This is normal for frontend apps, but sensitive tables must be protected by RLS.

Recommendation: Keep sensitive tables protected with Row Level Security so unauthenticated requests using the public anon key cannot read private rows. This scan only checked a short list of common table names.

Your Claude Code fix plan

Prioritized prompts you can paste into Claude Code or Cursor, top to bottom.

Phase 2 — High priority

  1. 1. Public API returns user or business data

Phase 3 — Medium & low

  1. 1. Missing Content-Security-Policy

Phase 4 — Retest checklist

After fixing, re-run the scan and confirm your score dropped. The full checklist is included in the copied plan.

Scan limits

This was an unauthenticated external scan. It did not log in, submit forms, inspect private source code, or run dependency/CVE analysis.

LaunchGuard helps detect common launch-blocking risks, but no automated scan can guarantee full security. Always review critical findings with a qualified developer before launch.

Launch Report · LaunchGuard.ai