Practical launch guide

A pre-launch website security checklist you can actually verify

Verify a website before launch with live checks for exposed files, JavaScript secrets, source maps, TLS, headers, cookies, DNS, and forms.

Updated
21 July 2026
Checks
10 launch gates
Audience
Founders and web teams

How to use it

Run this against the real production URL before announcing the launch.

Repository review and platform dashboards are necessary, but users receive the deployed site. Work through the list after the final build, domain, redirects, environment values, and API routes are in place. Record anything you cannot verify as unknown rather than treating it as passed.

01

Confirm one production hostname

Choose the canonical apex or www host, permanently redirect every alternative in one hop, and align canonicals, sitemap URLs, Open Graph URLs, internal links, checkout returns, and auth callbacks.

Verify: Request both hosts and confirm one HTTP 200 destination and one HTTP 301/308 redirect path.
02

Inspect the final deployment artefact

Verify that environment files, repository metadata, database dumps, backups, logs, source configuration, debug pages, and admin utilities were not copied into the public directory.

Verify: Run the exposed-files checker against the production URL.
Open the relevant live check ->
03

Review public JavaScript

Search the code browsers actually receive for secret keys, private tokens, server-only environment values, internal endpoints, and temporary authorization shortcuts.

Verify: Run the JavaScript-secrets scanner and manually review every high-confidence match.
Open the relevant live check ->
04

Make source-map publication intentional

Decide whether production maps should be public. If error monitoring needs them, upload maps privately and remove them from the public artefact when confidentiality matters.

Verify: Run the source-map exposure checker after CDN caches have updated.
Open the relevant live check ->
05

Check TLS and redirects

Use a valid certificate for every production hostname, disable legacy protocols where possible, redirect HTTP to HTTPS, and add HSTS only after every intended subdomain supports HTTPS.

Verify: Test the actual production host and representative subdomains, not only the hosting provider preview URL.
06

Set browser security headers

Deploy a tested Content Security Policy, clickjacking protection, content-type protection, a deliberate referrer policy, and a permissions policy appropriate to the application.

Verify: Inspect the live response for static pages, server routes, functions, redirects, and proxied content separately.
07

Review cookies, forms, and auth callbacks

Use Secure, HttpOnly, and appropriate SameSite settings; avoid credentials in GET requests; validate redirects against an allowlist; and enforce authorization on the server for every sensitive action.

Verify: Test signed-in, signed-out, expired-session, and lower-privilege paths from a clean browser profile.
08

Protect platform and data boundaries

Treat public function routes as public APIs, keep privileged keys server-side, apply least-privilege database grants, and test Row Level Security and storage policies independently of the website scan.

Verify: Use the Netlify or Supabase focused page when applicable, then run platform-native policy tests.
09

Harden domain and email DNS

Review authoritative nameservers, DNSSEC, CAA, SPF, DKIM, and DMARC. Confirm renewal, auto-renewal, billing contacts, and registrar account protection.

Verify: Resolve records from the public internet and send test mail through every legitimate sender.
10

Prepare monitoring and disclosure

Enable production error and security logging without recording secrets, publish a responsible-disclosure contact, set rate and cost alarms, and write a short incident and credential-rotation procedure.

Verify: Trigger a harmless test event and confirm the right person can find and act on it.

Ship blocker

Pause the launch for genuine credential or data exposure.

Remove public access, rotate affected credentials, review logs, correct the build boundary, and retest before sending traffic.

Not a ship blocker by itself

A low score or public client identifier needs context.

Prioritise confirmed evidence and affected behavior. A public Supabase publishable key, an informational technology marker, or a passive coverage warning is not automatically a vulnerability.

Useful primary referencesMDN Content Security PolicyOWASP session managementOWASP authorizationRFC 9116 security.txt