LEAKCADE

Repo scan vs URL scan: which one does your app need?

Updated 5 min read

A URL scanner looks at your live site from the outside, like a visitor would. A repo scan reads your source code and its history. In security jargon that's DAST (dynamic testing) and SAST (static analysis). Each one sees things the other can't, and vibe-coded apps often have bugs right in those gaps. Here's what a repo scan vs URL scan catches, with sources.

QUICK CHECKLIST

  • Headers and cookies checked with a URL scanner on your own domain
  • No exposed files (.env, .git, source maps) on the live site
  • Every API route and server action checked for a login in the code
  • Git history searched for keys, and every key found rotated
  • Supabase migrations read for open policies
  • Live database checked with the Supabase Security Advisor
  • Logged-out test with your own anon key and a second account

What a URL scanner sees

OWASP describes these tools as scanners that test web applications "normally from the outside" for problems like cross-site scripting, SQL injection, path traversal and insecure server configuration. You give them a URL, and they see what the internet sees:

A URL scan reflects the live state. A policy someone changed in the Supabase dashboard shows up here and never in the repo.

Where each scanner looksA URL scanner starts at the live site and sees headers, the JavaScript bundle and public API answers. A repo scan starts at the source code and sees every route, migration and the git history.URL SCANLive site,headers, JSbundlePUBLIC APIWhat answerswithout a loginREPO SCANEvery route,migration, commitHISTORYKeys deletedmonths agoURL SCANLive site, headers, JS bundlePUBLIC APIWhat answers without a loginREPO SCANEvery route, migration, commitHISTORYKeys deleted months ago

What only the code shows

A URL scanner can only test what it finds. Many of the bugs we see in AI-built apps are on paths a crawler rarely reaches or can't judge from outside:

Where a repo scan is blind

OWASP lists the weak spots of static analysis plainly: high numbers of false positives, and it is "frequently unable to find configuration issues, since they are not represented in the code." Both apply to us.

Repo scan vs URL scan side by side

URL scan (DAST)Repo scan (SAST)
Headers, TLS, cookiesYesNo, unless set in code
Exposed files, source mapsYesPartly (sees what would be published)
Secret in the JS bundleYesYes, and the file and line
Secret in git historyNoYes (how far back depends on the tool)
Server route without a login checkOnly routes it findsYes, every route in the code
Any account can edit any rowRarely (needs two accounts)Yes, from the policy
Policies changed in the dashboardYes, if the table is reachableNo
Fake dependency names (slopsquatting)NoOnly if the tool checks package names (we do)
Proof it's exploitableSometimes, when the tool reproduces the issueNo, it points at code to read

Typical coverage. Individual tools vary, so read what yours checks.

How to use both before launch

  1. Check your live site from outside

    Run Mozilla's HTTP Observatory on your domain for headers and cookies. If you want more, run ZAP's baseline scan against your own site.

  2. Check the live database

    Open the Supabase Security Advisor. Supabase's docs warn that some findings may be intentional, so check each against what you meant.

  3. Read the code

    Run a repo scan, or work through the vibe coding security checklist by hand: auth in every route, ownership checks, keys in history, policies in migrations.

  4. Test with two accounts

    Sign in as user A, copy a request, and replay it as user B and logged out. This catches missing ownership checks that neither scanner is likely to flag.

Fix prompt you can paste

FIX PROMPT
We're about to launch. 1) List every API route and server action and
say which ones check the login and the owner of the record. 2) List every
Supabase policy in supabase/migrations that uses (true) or only checks
for a login. 3) Search the code for secrets in VITE_ or NEXT_PUBLIC_
variables. 4) Tell me which settings live outside the repo (headers,
dashboard policies, buckets) so I can check them on the live site.
File and line for each finding, smallest fix first.

How Leakcade checks this

Leakcade is a repo scan. We read a public GitHub repo as text, run gitleaks over the last 50 commits, Semgrep, OSV-Scanner for known vulnerable packages, our own Supabase, payment and server-action checks, and an AI review. We never run your app or send requests to your site, so headers, hosting and dashboard settings are out of scope. Pair the report with a URL scan and the Supabase Security Advisor. Building in Lovable? Its built-in scan also reviews your database rules, see Lovable security scan vs Leakcade.

Headers and dashboard settings: check those with the tools above.

Sources

  1. OWASP: Source code analysis tools (strengths and weaknesses of SAST)
  2. OWASP: Vulnerability scanning tools (DAST)
  3. ZAP: Baseline scan
  4. MDN: HTTP Observatory tests and scoring
  5. GitHub Docs: Removing sensitive data from a repository
  6. Supabase docs: Database advisors

FAQ

What's the difference between SAST and DAST?

SAST (static analysis) reads source code without running it. DAST tests the running app from outside by sending requests. A repo scan is SAST, a URL scanner is DAST.

Is a URL security scanner enough for a vibe-coded app?

Usually not. It sees headers, exposed files and keys in the bundle, but not server routes it can't find, keys in git history, or policies that let one account edit another's data.

Can a repo scan see my Supabase dashboard settings?

No. Tables, policies and buckets made in the dashboard aren't in the repo. Check them with the Supabase Security Advisor or a logged-out test.

Is it legal to scan any website with a URL scanner?

Only scan sites you own or have permission to test. Active scans send attack-like requests.

Want a second pair of eyes?

We review your whole repo and write a fix prompt for every finding. $19, report within an hour.

Check my repo

Leakcade is an automated check. It can miss vulnerabilities and is not a substitute for a professional security audit or pentest. Provided as is. You stay responsible for your code. Where the law allows, our liability is limited to what you paid ($19). Terms

Patch Notes by Leakcade

A short weekly email: what changed in AI coding tools, one real security mistake, one prompt you can reuse.