What exactly we check, how the score is calculated, and — equally important — what we do not check.
The 51 checks
19 checks run in both modes, 32 more only in a full scan.
Secrets and keys (passive + full)
API keys of OpenAI, Anthropic, Groq, Stripe, Resend, Brevo, HuggingFace, Pinecone; Firebase service accounts; Supabase service_role; database URLs with passwords; private keys — searched in HTML, JavaScript bundles and source maps.
Client-side code (passive + full)
XSS patterns (dangerouslySetInnerHTML, v-html, innerHTML, eval, document.write), tokens in localStorage, JWT analysis (alg none, weak secret, missing expiry, admin flags), fail-open auth (catch blocks that let requests through), log injection, SQL injection surfaces, SSRF surfaces, AI tool mentions.
Web hygiene (passive + full)
Content-Security-Policy and its weak directives, HSTS, X-Content-Type-Options, clickjacking protection, Referrer-Policy, Permissions-Policy, cookie flags (Secure, HttpOnly, SameSite), CORS with credentials, open redirect, mixed content, SRI for external scripts, version disclosure.
Databases and storage (full)
Supabase RLS per table, public Supabase Storage buckets, Firebase Realtime Database, Firestore, Firebase Storage, S3 and GCS buckets with public listing.
AI surface (full)
Discovery of AI endpoints, prompt injection, jailbreak, system prompt leak, AI-mediated XSS, excessive agency (tool calling), indirect injection surfaces (file upload, RAG and vector stores).
Exposure (full)
Open .env and .git, backup dumps, admin panels, Swagger and OpenAPI documents, GraphQL introspection, unauthenticated APIs that return data, path traversal, dangerous HTTP methods, debug pages, stack traces and SQL errors, Host header injection, cache poisoning, hidden debug parameters.
Infrastructure and supply chain (full)
TLS quality (legacy versions and ciphers, HSTS preload), HTTP to HTTPS redirect, subdomain enumeration through Certificate Transparency, subdomain takeover, slopsquatting (packages invented by AI that do not exist in npm), vulnerable dependencies from package.json against the OSV database, Next.js CVEs, and a "does it actually work" pass on the app's own pages and login form.