Sample report. A real scan of one site, with its name and addresses hidden. No secrets and no customer data are shown.

Security report · first scan

example.com

Scanned 3 Nov 2026 · took 2m23s · 164 read-only requests

Findings

11 to fix

Critical 1

CriticalYour server's source code is published as a static file

Who can exploit this: Anyone on the internet

  • example.com: server source code is served as static files (/app.js) -- anything saved in that folder (uploads, exports, backups) is downloadable by name 1 file with server-only code

What it means

Files like server.js are downloadable, which means the folder your server runs from is also the public web folder. Anyone can read your backend code, and anything the app saves in that folder (uploads, exports, backups, .env) is downloadable by name.

How to fix

  1. Serve static files from a dedicated folder (e.g. public/ or dist/), never from the project root.
  2. Check what else lives in that folder (.env, uploads, exports) and rotate any secret.
  3. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

High 2

HighA library with known vulnerabilities is in use

Who can exploit this: Anyone on the internet

  • zod 4.4.3: GHSA-mrhx-c7xc-m3w5 (CVE-2023-54404) -- Zod can exhaust memory while validating oversized constrained collections

What it means

A JavaScript library your site ships has published security advisories for this version. How exploitable it is depends on how the app uses it.

How to fix

  1. Update the library to a fixed version (see the advisory) and rebuild.
  2. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

HighPlain HTTP does not redirect to HTTPS

Who can exploit this: Someone on the same network as your user (public Wi-Fi)

  • example.com: plain HTTP is served without redirecting to HTTPS (/ /login)

What it means

Visitors who type your address without https:// can be served an unencrypted page, which an attacker on the network can tamper with.

How to fix

  1. Turn on 'Force HTTPS' / 'Always use HTTPS' in your host or CDN, or add a 301 redirect from http:// to https://.
  2. Add HSTS (see the related finding).
  3. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

Medium 4

MediumNo Content-Security-Policy

Who can exploit this: An attacker who manages to inject a script

  • Site: no Content-Security-Policy (no defence in depth against injected scripts)

What it means

A Content-Security-Policy tells the browser which scripts may run. Without one, any script an attacker manages to inject (through a comment, a profile field or a compromised library) runs with full access to your users' sessions.

How to fix

  1. Start with a policy like: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; then add the domains your app really loads from (Supabase, analytics, fonts).
  2. Try it first as Content-Security-Policy-Report-Only, fix what breaks, then switch to enforcing.
  3. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

MediumNo HSTS header

Who can exploit this: Someone on the same network as your user (public Wi-Fi)

  • Site: no HSTS (Strict-Transport-Security)

What it means

HSTS tells browsers to always use HTTPS for your site. Without it, a user's first visit over public Wi-Fi can be downgraded to unencrypted HTTP.

How to fix

  1. Send Strict-Transport-Security: max-age=31536000; includeSubDomains on every HTTPS response.
  2. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

MediumOther sites can embed your pages (clickjacking)

Who can exploit this: A malicious site your logged-in users visit

  • Site: can be framed by any site (no X-Frame-Options or frame-ancestors) -- clickjacking

What it means

A malicious site can load your app invisibly in a frame and trick logged-in users into clicking buttons they can't see, such as 'delete' or 'transfer'.

How to fix

  1. Send Content-Security-Policy: frame-ancestors 'self' (and X-Frame-Options: DENY for older browsers).
  2. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

MediumOutdated encryption protocols are accepted

Who can exploit this: Someone on the same network as your user (public Wi-Fi)

  • example.com: obsolete protocol accepted: TLS 1.0, TLS 1.1

What it means

TLS 1.0 and 1.1 have known weaknesses and are retired by all major browsers.

How to fix

  1. Allow only TLS 1.2 and 1.3 in your server or CDN settings.
  2. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

Low 4

LowDMARC is monitor-only

Who can exploit this: Anyone sending email

  • DMARC is monitor-only (p=none): forged @example.com email is still delivered -- move to p=quarantine, then p=reject

What it means

Your DMARC policy is p=none, so forged email is still delivered.

How to fix

  1. Move to p=quarantine, then p=reject once your legitimate senders pass.
LowHosting control panel login faces the internet

Who can exploit this: Anyone on the internet

  • Hosting control panel login reachable from the internet: cPanel (:2083, 200), WHM (:2087, 200), Webmail (:2096, 200) -- use a strong password and 2FA, or limit it to your IPs

What it means

The login page of your hosting control panel (cPanel, Plesk…) is reachable by anyone, so its password is the only thing protecting your whole server.

How to fix

  1. Use a long unique password and enable two-factor authentication.
  2. If your host allows it, restrict the panel to your IP addresses.
LowNo Referrer-Policy

Who can exploit this: Attackers mapping your site for weak spots

  • Site: no Referrer-Policy

What it means

Without a Referrer-Policy, full page URLs (which can contain IDs or tokens) may be sent to other sites your pages link to.

How to fix

  1. Send Referrer-Policy: strict-origin-when-cross-origin.
  2. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

LowNo X-Content-Type-Options header

Who can exploit this: An attacker who manages to inject a script

  • Site: no X-Content-Type-Options: nosniff

What it means

Without nosniff, browsers may guess file types, which can turn an uploaded file into running script.

How to fix

  1. Send X-Content-Type-Options: nosniff on every response.
  2. Run the recheck.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

For your information 9

InfoA firewall blocked some file checks

Who can exploit this: Nobody directly; good practice

  • A server-side filter (406, e.g. ModSecurity) blocked 2 probe(s) -- those files were not tested

What it means

A web application firewall answered 406 to some probes, so those paths were not tested. That is fine; it just limits what this scan could see.

InfoInline scripts without a nonce

Who can exploit this: Nobody directly; good practice

  • Page has 3 inline script(s) without a nonce: a strict CSP needs nonces or hashes for them

What it means

Not a vulnerability by itself, but a strict Content-Security-Policy will need nonces or hashes for these scripts.

InfoNo CAA record

Who can exploit this: Nobody directly; good practice

  • No CAA record (any certificate authority may issue for example.com)

What it means

A CAA DNS record limits which certificate authorities may issue certificates for your domain. Optional hardening.

How to fix

  1. Add a CAA record for the authority you use, e.g. 0 issue "letsencrypt.org".
InfoNo Permissions-Policy

Who can exploit this: Nobody directly; good practice

  • Site: no Permissions-Policy

What it means

A Permissions-Policy switches off browser features (camera, microphone, location) your site doesn't use, limiting what an injected script could do.

How to fix

  1. Send e.g. Permissions-Policy: camera=(), microphone=(), geolocation=() for features you don't use.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

InfoNo security.txt

Who can exploit this: Nobody directly; good practice

  • No /.well-known/security.txt (how researchers can report issues)

What it means

/.well-known/security.txt tells people who find a vulnerability how to report it to you, instead of posting it publicly.

How to fix

  1. Publish /.well-known/security.txt with a Contact: line (email or URL) and an Expires: date.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

InfoOther hosts were not scanned

Who can exploit this: Nobody directly; good practice

  • The app talks to other hosts on your domain that this scan did not test: api.example.com -- add and verify each one to include it

What it means

Your app talks to other hosts on your domain. They were not tested because only the verified host is scanned. Add and verify them to cover your whole app.

InfoOther live hosts appear in certificate logs

Who can exploit this: Nobody directly; good practice

  • Live hosts in certificate logs that this scan did not cover: www.example.com -- an entry point worth its own (verified) check

What it means

Public certificate logs list these hosts on your domain. Each one is a way in that deserves its own check.

InfoServed through a CDN

Who can exploit this: Nobody directly; good practice

  • Served through Cloudflare
InfoSession token appears to be stored in localStorage

Who can exploit this: An attacker who manages to inject a script

  • The app appears to keep its session token in localStorage (readable by any script on the page; CSP matters more)

What it means

Anything in localStorage can be read by any script on the page. If a script is ever injected, it can steal sessions. This is common (Supabase does it by default) and makes a strong CSP more important.

How to fix

  1. Keep a strict Content-Security-Policy.
  2. If you control the backend, consider HttpOnly cookies for sessions.

Fix prompt for your AI assistant

Prompts for other AI tools

Lovable

Bolt

Cursor

Passed checks

7
  • example.com: certificate chain and hostname verify
  • No directory listings found
  • No secret keys found in 39 JavaScript file(s)
  • No public source maps
  • No public API documentation found
  • Error pages reveal no stack traces or paths
  • SPF record published for @example.com

What we detected

Seen from outside
LayerComponentEvidence
edgeCloudflare response headers
tlscertificate from Let's Encrypt issuer of example.com's certificate
frontendTanStack Router / Start (SSR) $_TSR hydration script
buildVite hashed /assets/ files + modulepreload
frontendreact-dom 19.2.5renderer version in a bundle
frontendreact 19.2.5ships with react-dom 19.2.5
frontendzod 4.4.3zod 4 version object in a bundle (likely)
hostingcPanel login reachable at https://example.com:2083/
hostingWHM login reachable at https://example.com:2087/
hostingWebmail login reachable at https://example.com:2096/

This is an automated test from the outside, without logging in. It does not prove the absence of other flaws: access control between users, business logic and injection need a logged-in test.

See where your site stands

Your first deep scan is free. No credit card.

Start free scan