You shipped it in a weekend.
Who else can read it?
SecScan runs 213 security checks against a live web application and grades what it finds A–F. This site is the other half: what each finding means, why it carries the severity it does, and the exact change that clears it. Free to read, no account.
- 213
- checks, every scan
- 47
- engine modules
- 0
- check tiers, every scan runs all of them
Built for apps shipped faster than they were audited
AI builders are good at features and consistently silent about security. These are the findings that come back Critical most often.
Backends with no access rules
Supabase tables that answer anonymous reads because Row Level Security was never enabled — CVE-2025-48757. Also Firebase, PocketBase and Appwrite.
Read more →Keys in the bundle
A service_role JWT or an AWS secret in client-side JavaScript, matched against 35 credential patterns — while public-by-design keys are left alone.
Read more →Config you deployed by accident
81 paths probed for .env files, .git directories, actuators and admin panels, each confirmed against the site’s own catch-all before it counts.
Read more →Server props left in the HTML
Next.js serialises server data into __NEXT_DATA__. Nine distinct secret types get read straight out of the page, no JavaScript required.
Read more →There are no check tiers
Every scan runs every check. A paid plan changes how many scans and monitored sites you get, never which checks run. What changes how deep a scan reaches is access, not price.
Domain verification
All active probingCredentials
The surface behind the loginA second account
Broken access control (OWASP A01)An out-of-band collector
SSRF detection (OWASP A10)Start here
How a scan works
The six stages, the domain-verification gate, and the safety rules that keep active probing from changing your data.
ReportsReading your report
The AI-written analysis, and one fix prompt that works pasted into any AI coding tool.
MonitoringContinuous monitoring
Hourly availability and configuration checks, deep rescans on a cadence that follows your grade, hourly CVE matching with EPSS scoring, and certificate expiry alerts.
Guides
Missing Content-Security-Policy
What a Content-Security-Policy header does, why SecScan reports its absence as High, and how to ship one without breaking your app.
HighCookie flags: Secure, HttpOnly, SameSite
Why a session cookie missing Secure is High while the same gap on an analytics cookie is Low, and how to set all three flags correctly.
CriticalSupabase tables readable with the anon key
CVE-2025-48757: how a Supabase project ships with Row Level Security off, why the anon key is not the problem, and how to confirm and fix it.
HighSPF, DKIM and DMARC
Three DNS records decide whether anyone can send email as your domain. What SecScan checks, and the exact records to publish.
CriticalExposed .env files and source maps
Two ways a deploy publishes things it never meant to: config files served as static assets, and source maps shipped next to production bundles.
HighIs my Lovable, Bolt or Cursor app secure? What to check
The problems that most often reach production in apps built with AI tools (open databases, keys in front-end code, public config files) and how to check each one from the outside.
CriticalAPI keys exposed in JavaScript (OpenAI, Anthropic, Stripe, AWS)
How a secret key ends up in front-end code, how to tell a secret key from a public one, and what to do the moment you find one.
CriticalFirebase security rules left open (Firestore, Realtime Database, Storage)
How to tell whether your Firebase project is readable by anyone, and the rules that fix Firestore, Realtime Database and Cloud Storage.
MediumMissing HSTS header (Strict-Transport-Security)
What HSTS does, why an HTTPS site without it can still be downgraded, and the exact header to set on Nginx, Apache, Vercel, Netlify and Cloudflare.
CriticalIDOR and broken access control: how to test it
Broken object-level authorisation is the most exploited flaw on the web. What it is, why it needs two accounts to find, and how to fix it.
Common questions
What is SecScan?
SecScan is an automated black-box security scanner for web applications. You give it a URL for a site you own or are authorised to test, and it runs 213 security checks against the live application — security headers, TLS, cookie flags, exposed configuration files, leaked credentials, injection, and access control — then returns a plain-English report with a letter grade from A to F and a numeric risk score. Scans run at secscan.us; the reference documentation is at secscan.info.
Is SecScan a penetration test?
No. SecScan is an automated scanner and does not replace a manual penetration test. It finds the classes of problem that are reliably detectable from outside an application — misconfiguration, exposure, missing controls and known-vulnerable components — but it cannot reason about business logic the way a human tester can.
Does SecScan send real attack traffic?
Its passive checks do not — they observe only what an ordinary visitor sees. Its active checks do send real probe traffic, including injection payloads and path-traversal attempts, so they run only against domains whose ownership you have proven with a DNS TXT record or a well-known file. There is no denial-of-service testing, no credential brute-forcing and no destructive requests.
What does SecScan check for?
It runs 213 checks across 47 modules: security headers including CSP and HSTS, TLS versions, cipher suites and certificate validity (checked by SecScan itself, with no outside grading service), cookie Secure/HttpOnly/SameSite flags, CORS misconfiguration, 81 sensitive paths such as .env files and .git directories, 35 credential patterns in JavaScript bundles, Supabase and Firebase access rules, Next.js __NEXT_DATA__ leakage, JWT weaknesses, exposed source maps and API documentation, known-CVE component versions, DNS and email authentication records, and, when you name a GitHub repository, its source files (committed secrets, Supabase migrations, CI configuration, risky code patterns and vulnerable dependencies), and — on verified domains — reflected XSS, SQL injection, path traversal, IDOR and broken function-level authorisation.
How does SecScan avoid false positives?
Every actionable finding is confirmed behaviourally rather than inferred from the presence of a response. Header gaps are re-fetched before they are reported, candidate paths are checked against the site’s own catch-all handler so a single-page app’s fallback route cannot look like an exposed file, and public-by-design keys are excluded from credential matching. The scanner is regularly run against well-secured sites where the correct answer is known in advance, and every actionable finding is checked by hand.
What is the difference between secscan.us and secscan.info?
secscan.us is the scanner itself — where you sign in, run scans and read reports. secscan.info is the reference documentation: what each check looks for, what each finding means, and how to fix it. They are one product under one publisher.
Scanning happens on secscan.us
This domain is documentation only — it holds no accounts and runs no scans. Point SecScan at a site you own, verify the domain, and it returns a graded report, usually in under a minute. Every account gets 3 free scans every month.
Start a scan →