All articles

Security scan website before you launch

7 min read

Free security scan

Is your Next.js app secure? Find out in 30 seconds.

Paste your URL and get a full vulnerability report — exposed keys, missing headers, open databases. Free, non-invasive.

No code access requiredSafe to run on productionActionable report in 30

A security scan website should check the public app the way an outside attacker would, before real users arrive. The goal is not a vague score. It is to find exposed secrets, risky routes, weak headers, broken access control, and production misconfigurations that are reachable from the internet. For AI-built apps, this matters because generated code often ships fast, but misses boring security details.

What a security scan website checks?

The first pass should focus on what is actually exposed. A useful scan does not only look at the homepage. It follows links, probes common files, checks headers, tests obvious API paths, and reports what can be verified safely.

Prioritize checks that map to real launch risk:

  • public attack surface, including pages, APIs, redirects, and assets
  • exposed secrets, such as public env files, tokens, and source maps
  • authentication gaps, including admin pages reachable without login
  • unsafe debug routes, test endpoints, stack traces, and verbose errors
  • missing browser protections, including CSP, HSTS, and cookie flags
  • known vulnerable packages, when versions are visible or inferable

This is different from a deep internal code review. A scanner sees what attackers can reach from outside. That makes it especially useful before launch, after deployment changes, and after AI-assisted refactors that may alter routing, middleware, or environment handling.

A good starting point is an external security scan of the deployed app, followed by focused checks for anything the scan marks as reachable. If the app is handling payments, accounts, private content, or admin features, use a broader deep scan before announcing the product publicly.

For broader launch planning, pair this with an app security scanner workflow so you cover both web exposure and app-specific behavior.

Scope the launch target

Scanning the wrong target gives false comfort. The target should be as close to production as possible, with real routing, real security headers, real authentication, and the same deployment platform settings.

Use one production-like host as the primary target. Avoid scanning a half-configured preview URL unless that preview is also public. Many launch issues happen because staging has protections that production does not, or because production has a forgotten route that staging never included.

Define the scope before scanning:

  1. Include the main domain and canonical subdomain.
  2. Include public API routes used by the frontend.
  3. Include auth pages, signup, login, password reset, and account settings.
  4. Include checkout or billing redirects if they are part of the launch.
  5. Exclude destructive actions unless you have a safe test account and clear limits.

Keep the scan safe. For prelaunch work, the goal is to detect exposure, not to stress test infrastructure or attempt exploitation. A practical scanner should report evidence without modifying data, creating spam accounts, or triggering real purchases.

Also check the boring files. AI-generated projects often include template leftovers, example configs, public build artifacts, or old routes from previous iterations. A site vulnerability scan should look for paths such as .env, .git, source maps, test pages, backup files, and framework-specific build outputs.

Here is a short local check you can run against a deployed URL before using a fuller scanner:

bash
TARGET=https://example.com
curl -I $TARGET
curl -I $TARGET/.env
curl -I $TARGET/.git/config
curl -I $TARGET/api/health
curl -I $TARGET/admin
curl -I $TARGET/_next/static/chunks/main.js

This does not replace scanning, but it quickly reveals obvious mistakes. If .env returns 200, if /admin loads without auth, or if headers are missing on the main response, stop and fix those issues before inviting users.

For one common high-impact case, follow a dedicated public env check. Exposed environment files can leak database URLs, API keys, signing secrets, and third-party credentials in seconds.

Fix findings by severity

Treat scan output as a release queue, not a report to archive. The right response depends on exploitability, data impact, and whether the issue is publicly reachable.

A practical severity model works like this:

  • Critical means public secrets, unauthenticated admin access, exposed private data, or remote code execution indicators.
  • High means broken access control, sensitive debug output, missing auth on APIs, or dangerous misconfiguration.
  • Medium means weaker browser protections, outdated visible software, risky redirects, or information disclosure.
  • Low means hardening gaps that matter, but do not block a small private beta by themselves.

Critical and high findings should block launch. If a secret was exposed, do not only remove the file. Rotate the credential, invalidate old tokens, redeploy, and check logs for access. Secrets should be treated as compromised once they were publicly reachable.

For authentication issues, verify the fix with a logged-out browser, a fresh incognito session, and a non-admin account. Many teams test only as the owner account, then miss that an API route returns records when called directly. Check both page access and API access.

For headers, aim for useful protections rather than blind perfection. At minimum, set secure cookie attributes, prevent MIME sniffing, use HSTS on HTTPS-only production domains, and avoid permissive framing unless the product truly requires embeds. If you add a Content Security Policy, start with report-only if the app has complex third-party scripts.

The OWASP Application Security Verification Standard is a useful reference when you need a deeper control list. For prelaunch scanning, translate standards into release decisions: what must be fixed now, what needs a ticket, and what is acceptable for the current risk level.

AI-built apps often need special attention around generated API handlers. Common problems include trusting client-provided user IDs, returning full database objects, leaving test routes active, and handling authorization only in the UI. A web security scanner can find exposed routes, but you still need to review whether each route enforces ownership on the server.

Prelaunch checklist

Before launch, make the scan part of the release process. Do it after the final deployment, not only during development. A dependency update, environment change, or hosting setting can change the public risk profile.

Use this checklist for a lean but realistic launch gate:

  • Scan the final public domain, not only localhost or preview.
  • Confirm secrets are not reachable in files, bundles, source maps, or errors.
  • Test logged-out access to admin, account, billing, and API routes.
  • Verify cookies use HttpOnly, Secure, and appropriate SameSite settings.
  • Check security headers on the main app and important API responses.
  • Confirm error pages do not expose stack traces or environment values.
  • Remove sample users, seed data, debug banners, and test payment routes.
  • Rotate any credential that was ever exposed during development.
  • Re-scan after fixes and save the result with the release notes.

Two rules prevent most prelaunch surprises. First, scan only what is reachable from the public internet, then verify each serious finding manually. Second, never commit secrets to the repo, even if the repository is private today.

If your product has multiple public surfaces, use an attack surface scanner mindset. Marketing pages, docs, API subdomains, redirects, file uploads, and auth callbacks all count as launch exposure.

For AI-generated projects, also review the generated assumptions. Look for routes named test, debug, admin, seed, dev, and internal. Generated code may create convenient helpers that were safe in a prototype but dangerous in production. Remove dead routes before launch instead of hiding them behind weak checks.

A prelaunch scan should not be the only security control, but it is one of the fastest ways to catch public mistakes. Run it, fix what blocks release, scan again, then monitor the app after launch.

Faq

How often should i scan my website?

Scan before every public launch, after major code changes, and after hosting or environment changes. For an active SaaS app, weekly scanning is a reasonable baseline. Scan immediately after adding auth flows, payment flows, file uploads, admin areas, or new public API routes.

Can a scanner prove my website is secure?

No scanner can prove complete security. It can find reachable issues, misconfigurations, exposed files, weak headers, and suspicious public routes. You still need server-side authorization review, dependency management, secret hygiene, and monitoring. Treat scanning as a release gate, not a guarantee.

What should block launch immediately?

Block launch for exposed secrets, public .env files, unauthenticated admin access, private data exposure, broken account isolation, dangerous debug output, or writable public endpoints. These issues create direct risk to users, data, or infrastructure. Fix them, rotate affected credentials, and re-scan before publishing.

If you want a simple prelaunch gate, run AISHIPSAFE against the deployed app and use the findings to fix public exposure before users or attackers find it.

Free security scan

Is your Next.js app secure? Find out in 30 seconds.

Paste your URL and get a full vulnerability report — exposed keys, missing headers, open databases. Free, non-invasive.

No code access requiredSafe to run on productionActionable report in 30