scanfull
no signup · no card · your first scan is free

AI shipped you a finished site.
And the database key in the browser.

No signup, no card. Usually under a minute — it's a real browser opening your site.

Scanfull opens your live site like any visitor would, finds what was left exposed, and proves every flaw. Then it hands you the ready-made prompt for your assistant to fix it — and comes back to confirm it was done.

Only use on sites you own or are authorized to test. Never put a password or token in the URL.

chromium · my-app.lovable.app/assets/index-4f2b.jsreading
1281import { createClient } from "@supabase/supabase-js"1282// auto-generated — do not edit1283const url = "https://xyzcompany.supabase.co"1284const db = createClient(url, "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9")1285// role: service_role · bypasses all RLS
criticalservice_role key exposed

We analyze the published site — the tool that generated the code doesn't matter

LovableCursorBolt.newv0Claude CodeReplitWindsurfFirebase StudioBase44Next.jsSupabaseVercel
Claude CodeCursorLovableWindsurfGitHub CopilotChatGPTGeminiReplit Agent

The site loaded. Login worked. One question is missing.

What can a stranger do beyond what you planned for?

Critical

The key that should stay on the server shipped with the deploy.

When a private credential ends up in the code the browser downloads, it stops being yours. Whoever opens the file starts spending on your account.

GET /assets/index-4f2b.js → 200 · sk_live_4eC3••••

Critical

Logging in should not unlock the whole database.

With Row Level Security off, the same call that returns your orders returns everyone's. The site works the same — the leak is silent.

GET /rest/v1/orders (no session) → 200 · 3,418 rows

High

The deploy shipped more than the new version.

Environment files, backups, and code directories stay served by the server because no one told it to block them.

GET /.env → 200 · 1.2 KB

Medium

Your domain sends email in your name. And so does anyone else.

Without published SPF and DMARC, a stranger sends phishing signed with your domain. Your customer pays the trust bill.

TXT _dmarc.your-domain.com → not found

No one is going to hack your site.
A bot is already going through it.

Almost no one wakes up set on attacking your system. What exists is automated scanning, all day, looking for the same handful of slips on every address that answers. You don't have to be a target — you just have to be online.

230 million

targets swept by a single campaign

An extortion operation collected .env files from around 110,000 domains and used the breached machines to scan the internet for more. Nobody chose those victims: they just answered.

Unit 42, Palo Alto Networks · 2024

22 minutes

between a flaw going public and the first attempt

That was the gap measured between a proof-of-concept being published and the first real attack using it. Not time to react afterward — time to already be closed before.

Cloudflare, State of Application Security · 2024

170 of 1,645

sites from Lovable's own showcase with an open database

A researcher swept the official gallery and found 10% with row-level protection off. You could read the name, email, phone, address, and debt amount of real people.

CVE-2025-48757 · Matt Palmer

What a stranger does with an open database, in practice

  • Reads the users table

    Your customers' names, emails, phones, and addresses, all at once, with a request any browser makes.

  • Writes to it

    With no row rule, reading and writing are the same permission. You can edit your own record and become a paying subscriber without paying.

  • Spends on your account

    With the API key in the bundle, the usage is theirs and the bill is yours — and you only find out at month-end.

None of these takes talent. It takes an open door — and the scan that finds the door is the same for everyone. That's why closing this layer cuts off the source of nearly every incident in a new site.

Not just us saying it

The risk is real — and documented.

Security researchers and the press have already measured what happens to AI-built sites. The numbers come from public sources — click to check.

1 in 5

AI-built apps with a serious flaw

Wiz — one of the largest security firms in the world — analyzed AI-built apps and found exposed API keys, open databases, and insecure login in 1 of every 5.

Wiz Research · 2025Read the source

380,000

AI-built sites exposed today

Research by RedAccess, reported by VentureBeat and verified by Axios and Wired: 380,000 publicly accessible AI-built sites — around 5,000 leaking sensitive data.

VentureBeat · Axios · WiredRead the source

9.3/10

CVE-2025-48757 — open Supabase

A flaw with an official record (CVE): 170+ Lovable-built apps left their database open. Anyone could read users, payments, and keys — just by opening the site.

Official CVE recordRead the source

Finding is easy. Proving is the work.

Any scanner finds a key that looks like a key. The question that decides whether you have to wake up at 3 a.m. is a different one: does it work?

Surface scanner

“We found a credential that appears to be private. Validity not verified. Confidence: to be confirmed.”

You get a suspicion and the job of investigating it alone.

Scanfull

“We used the key. It opened 3 tables with no authentication and returned 3,418 records — including customer email and address.”

You get a fact, with the list of tables that opened.

The test that truly interacts with your system only runs after you prove you own the domain. Without that, it would be intrusion testing on someone else's site — and we don't do that even when asked.

From URL to “done.”

Four steps. The third is free and the fourth is what almost no one delivers.

  1. 01

    Paste the address

    No signup, no card, nothing to install. Just your site’s public URL.

  2. 02

    A real browser opens your site

    It’s not a curl looking at a header. It’s Chromium crawling up to 120 pages, reading the bundles, storage, cookies, and the domain’s DNS — that’s why it finds what it finds. Usually under a minute.

  3. 03

    You see the score and flaws right away

    Free, with the prioritized action plan: what to fix today, how long it takes, and how much risk comes off.

  4. 04

    Fix it and prove you fixed it

    The full report opens where each flaw is and the ready-made prompt. Then the retest confirms it live — included for 7 days after purchase.

See the report before you type anything.

The finding, the proof behind it, the fix, and the confirmation — in that order, because that’s the order you need to act in.

report · my-app.lovable.app · public scopescore 0 / 100

Verdict

Four critical flaws put your database, your payments, and your customers’ data within reach of any visitor — and just two are enough to zero the score. The worst part: the site is live, polished, and working. That’s exactly what keeps anyone from noticing, until the damage lands.

4
Critical
4
High
4
Medium
2
Low
0
Info

Action plan: the first block takes ~1h40 and removes 90% of the risk.

Open the full example report14 findings · action plan · fix prompts

The Scanfull seal

When the site passes, your client sees it.

A paid report ends with a “Verified by Scanfull” seal — your score, the date, the tier. Drop it in the footer with one line of code. It links to a public verification page and never exposes a single finding: proof, to whoever visits, that the security was actually looked at.

In your client’s footer

Verified by ScanfullGold
my-app.lovable.app · Score 92/100 · September 9, 2026

© 2026 my-app.lovable.app

The tiers

Bronze

Public surface

Silver

+ Logged-in area

Gold

+ Admin & escalation

Platinum

Done-for-you

It’s live: the seal always shows your site’s current grade, and it climbs as you fix things. Put it on your site — or don’t. Your call.

What we find

93 types of check across 14 families, each classified by OWASP Top 10 and CWE. Each type runs against every page, every file, and every header your site serves — your report shows how many checks actually ran.

Secrets in the frontend

Stripe, OpenAI, Anthropic, AWS, Google, GitHub, PEM keys — and the Supabase service_role, which bypasses all RLS. In the bundles and in server-rendered HTML (SSR).

Public database (RLS)

Active test: we try to read your tables with no authentication. If a row comes back, the database is open — and we count how many.

Open Firebase

Realtime Database and Firestore that answer with no login, and listable Storage — the AI apps’ backend shortcut, often left wide open.

Public buckets

Listable S3 and Google Cloud Storage buckets: whatever should be private can be enumerated — and downloaded.

Exposed files

.env, .git and config backups served publicly. A secret one click away, no technique required.

Hidden surface

Forgotten subdomains (api., staging., admin.) via Certificate Transparency, and internal endpoints — Actuator, Swagger, phpinfo, GraphQL — that leak config and the map of your API.

Headers and cookies

CSP, HSTS, clickjacking, nosniff, Referrer-Policy, and the session cookie flags.

HTTPS, TLS and mixed content

Missing redirect, expiring certificate, obsolete TLS, and HTTP resources inside an HTTPS page.

CORS, Web Storage and personal data

Wildcard origin (with and without credentials), a session token where any script can reach it, and personal data — card numbers, IDs — kept in the browser.

Email DNS and CAA

Missing SPF, DMARC and CAA — the gaps almost no site scanner looks at, that turn into phishing in your name or a certificate issued by the wrong party.

Supply chain (SRI)

Third-party scripts with no Subresource Integrity: if the CDN is compromised, foreign code walks straight into your site.

Libraries with known flaws

jQuery, lodash, axios, Handlebars and others: we cross the version your site loads against public flaws already patched.

Resilience (CDN/WAF)

Signs of a CDN or WAF in front of the site. Without that edge layer, a traffic spike — or a bot — can take your origin down.

WordPress

Users enumerable via the REST API, xmlrpc.php open, and readme.html exposing the version — the first doors attack bots knock on.

Logged-in permissions

In the +User and +Admin levels: one user’s data reachable by another (IDOR) and privilege escalation — a regular user reaching what’s admin-only.

Classification and priority

Every finding ships with OWASP Top 10, CWE, an effort estimate, and a data-protection flag when personal data is at risk.

“Can’t I just ask my AI to do this?”

For half of it, you can — and we won’t pretend otherwise. If the report says a security header is missing, paste it into your assistant and it’s solved. That’s why the scan and the list of flaws are free.

What it can’t do is look at your live site. It doesn’t know which key leaked or in which file inside a one-megabyte bundle. It doesn’t know which tables in your database answer without authentication. And above all, it has no way to confirm the fix landed in production — it thinks it fixed it, which is not the same thing.

That’s the difference we charge for: proof of where it is, and proof that it’s done.

One price per depth. No fine print.

You pay for how deep you want to go — each level includes the one before. The report is a one-time payment; continuous monitoring is a separate optional add-on (just below).

Free scan · $0 — no signup, no card

A 0-to-100 score for your site · The full list of flaws, by severity · OWASP, CWE and data-protection classification · Prioritized action plan, with time estimates

Public

$49 / site

The home and every public page — plus everything the browser downloads (bundles, configs). That is where most AI-built site leaks show up.

  • Where each flaw is — the exact page, header or record
  • Cause, impact, and before/after code
  • Fix prompt per assistant (Claude Code, Cursor, Lovable, Windsurf)
  • Retest included for 7 days after purchase
  • Report exportable to Markdown and PDF

+ User

$99 / site

Everything in Public plus the logged-in user area. You create a test account; we run it in an isolated session and wipe it afterward.

  • Everything in the Public level
  • Pages and actions available to the logged-in user
  • One user's data reachable by another (IDOR)
  • Permission flaws inside the account

+ Admin

$199 / site

The complete audit: everything in the levels below plus the admin panel and the most valuable test of all.

  • Everything in the Public and User levels
  • Admin panel and privileged actions
  • Privilege escalation: a regular user reaching admin-only areas
  • Broken access control between roles
  • Email hardening (SPF + DMARC), done for you — included
  • Automatic fix of your security headers, via a PR on your GitHub — included

The first scan is free — you only pay if you want the proof and the fix.

Got a coupon from a partner community? Enter it at checkout — the discount applies automatically.

No signup, no card. Usually under a minute — it's a real browser opening your site.

Continuous monitoring

A scan is today’s photo. Your site is a movie.

The same automated sweep that finds you today comes back tomorrow — and your code changes with every deploy, so what was closed last week may have reopened yesterday, with no one noticing. That’s why real security isn’t an event, it’s follow-through: Scanfull re-scans your site’s public surface on its own, on the schedule you pick, and emails you the moment a new issue appears. You fix it before it becomes an incident.

Runs on its own

Daily or weekly, without you remembering. Scanfull’s robot opens your site again and re-runs the public-surface checks.

Flags only what changed

It compares run to run by each finding’s fingerprint — and alerts you only when a new, significant issue appears. No noise.

Email right away

The new issue lands in the purchase email, with a link to the updated report. You act the same day, not at month’s end.

Weekly US$ 19/mo · Daily US$ 39/mo, per sitecancel anytime · stays on until the end of the paid month

Turn it on in one click on your paid report, in the “My reports” panel.

Monitoring watches the public surface. The logged-in area (+User/+Admin) isn’t part of it — that audit needs your session each time, and we never store your session. To re-check the logged-in area, run a new logged-in audit whenever you like.

When it’s worth running

Before showing it to anyone

The moment the site stops being just yours is the moment its surface starts to matter to a stranger.

After touching login or the database

Permissions, sessions, and integrations are exactly where the code assistant improvises when you’re not looking.

On handoff to a client

A report with evidence and a retest changes the conversation: you deliver software with an audit, not a promise.

On every deploy that matters

The surface changes with the code. What was closed last week may have reopened yesterday.

FAQ

Scope, security, fixing, and billing — no fine print.

Do I have to install anything or give access to my code?

No. Scanfull looks at the published site, from the outside, like any visitor would: it opens the pages in a real browser, reads the files the site serves, and checks the domain’s DNS. No plugin, no SDK, no repository access, and not a single line changed in your project.

Does the scan touch my site? Could it break something?

It writes nothing. The surface checks only observe responses. The checks that truly interact with the system — like the RLS test — only run after you prove you own the domain, and even then they are read-only.

My site was built with Lovable / Cursor / Bolt / v0. Does it work?

It works, and that’s exactly the case Scanfull was built for. Because we analyze what’s published, the tool that generated the code doesn’t matter. What changes is the output: the fix prompt comes in the format of the assistant you use.

If the report shows the problems, can’t my AI just fix them?

For the easy ones, it can — and that’s fine, the free scan exists for that. What your AI can’t do is look at the live site: it doesn’t know which key leaked or in which file, doesn’t know which database tables are open, and can’t confirm the fix landed in production. That’s what we sell.

What exactly is in the full report?

The location of each flaw with the evidence, the root cause and impact, before/after code, the fix prompt for your assistant, the instruction on how to verify it’s done, the retest for 7 days after purchase, and the report exportable to Markdown or PDF.

How does the retest work?

After fixing, you trigger the second pass on the same address. We compare finding by finding by each one’s fingerprint and tell you what left the list, what remains, and what appeared afterward. It’s included in what you paid, for 7 days after purchase.

Do you store the keys you find?

Never in clear text. As soon as a secret is detected, it’s masked before anything is stored — what stays in the database is the masked version and a hash, used to recognize the same key in a future scan. This is a product rule, verified by an automated test and by a constraint in the database itself.

Can I scan a client’s site?

Only with their authorization. The surface part is what any visitor sees, but the checks that interact with the system require domain verification precisely so no one tests what they shouldn’t. If you’re an agency or software house, verify the domain together with the client and the report comes out ready to hand over.

Finding out now usually takes under a minute.

Finding out later usually costs the client who trusted you.

No signup, no card. Usually under a minute — it's a real browser opening your site.

scanfull

Scanfull — AI-operated security audit