Is your Cursor-built app secure once it is live?

Cursor helps you write the code; you deploy it yourself. This scanner checks the result: the live, deployed app. It looks for the mistakes that survive into production, like a key that made it into the browser bundle or a database that answers anonymous requests.

Scan your deployed app

Paste the live URL of your deployed app. Read-only: it never changes anything.

What it means

A password-like key that is supposed to stay private is sitting in your app where other people can find it. Anyone who copies it can act as you — run up bills, read your data, or send email in your name.

Why AI tools cause it

AI coding tools often paste an API key straight into a file to make something work, instead of hiding it in a private environment variable. It runs fine, so nothing warns you.

How xlogs checks it

xlogs scans your live JavaScript against 9 key formats covering Stripe, OpenAI, Anthropic, AWS, Google, GitHub, Slack, private key blocks, and Supabase service_role tokens.

What to check on a Cursor-built app that is live

The fastest path to a working feature is not always the safe one, and AI-written code sometimes takes it: a secret pasted where the browser can read it, a database call with no access rules behind it, or a build that ships source maps. Those are exactly the things a scan of the deployed app can catch.

This checks your live URL only. Source-level issues like SQL injection or unsafe HTML are found by reading the code, not the deployed site, so they are a separate job from this live scan.

The top issues to check on a deployed Cursor app

  • An API key or service key exposed in the client bundle
  • A database that returns private rows to anonymous requests
  • Missing security headers (CSP, HSTS, X-Frame-Options)
  • Public source maps or private files served from the live site

How to fix it

The goal: The key is stored only in a server-side secret / environment variable, never in code or the client bundle, and the exposed value has been rotated (regenerated) because the old one is public.

  1. Move the key's value into a server-only environment variable
  2. Remove the literal value from the code and any client-side bundle (the affected spot)
  3. Make sure the .env file is in .gitignore
  4. Rotate (regenerate) the key at the provider — assume the old one is compromised
Paste this to your AI coding tool (Lovable, Cursor, Claude Code):
In my app (the spot the scan shows): a secret key is exposed. Please make this true: The key is stored only in a server-side secret / environment variable, never in code or the client bundle, and the exposed value has been rotated (regenerated) because the old one is public. Steps: Move the key's value into a server-only environment variable; Remove the literal value from the code and any client-side bundle (the spot the scan shows); Make sure the .env file is in .gitignore; Rotate (regenerate) the key at the provider — assume the old one is compromised. Then tell me exactly what you changed, and do not print any secret values back to me.

Then verify: After you deploy the fix, xlogs re-scans your live app and your files and confirms the key is no longer present.

Common questions

Can xlogs scan my Cursor project directly?

Not the local project. This web scanner checks a deployed URL, so point it at your live app once it is online. It finds the issues that reach production: exposed keys, an open database, missing headers, and public source. Source-only issues like SQL injection are a separate, code-reading check.

Why check the live app if I can read the code in Cursor?

Some problems only appear once the app is built and deployed: which secrets ended up in the browser bundle, whether source maps shipped, and how your database actually responds to an anonymous request. The live scan sees exactly what a visitor (or an attacker) sees.