Base44 security scanner

Base44 lets you build an app without writing much code, which means the security details are even further out of sight than usual. When you connect a payment provider, an email service, or an external database, it is easy for a key to end up somewhere public. This page explains what to check and scans your live app now.

Scan your Base44 app

Paste your live Base44 URL. Read-only: only GET and HEAD requests, no forms, no logins.

What it means

A value shaped like a private key or password is in code your site serves, where anyone can read it. If it still works, anyone who copies it can act as you: run up bills, read your data, or send email in your name. xlogs did not test it.

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 18 key formats covering Stripe (live, test and webhook secrets), OpenAI, Anthropic, AWS, Google, GitHub, Slack, private key blocks, and Supabase server keys (service_role and sb_secret_).

What to check first on a Base44 app

On a Base44 app, check first for an exposed secret key, which can come from connecting an outside service. Then check the security headers and, when the app connects to an external database, whether its tables can be read without a login.

You cannot spot these by using the app. The scan below checks the live app the way an outsider would, and flags only what has real evidence behind it.

The top Base44 security issues to check

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

How to fix it

The goal: The exposed key has been replaced and revoked at the provider, because removing it from the code does not stop it working, and the new value is stored only in a server-side secret or environment variable, never in code or the client bundle.

  1. Contain and rotate the exposed key first, because removing it from the code does not stop it working: if you suspect it is being misused, revoke it at the provider now; otherwise create a replacement, put it in the app's server-side secret settings, confirm the app works with it, and then revoke the exposed key promptly
  2. Remove the literal value from the code and any client-side bundle (the affected spot), so the key is read only from a server-only environment variable
  3. Make sure the .env file is in .gitignore
  4. Clear the old value from deployed builds and caches, and from the repository's history where you can; once the key is revoked, a copy left there no longer works
Paste this to your AI coding tool (Lovable, Cursor, Claude Code):
In my app (the spot the scan shows): a credential-shaped value is publicly served. Please make this true: The exposed key has been replaced and revoked at the provider, because removing it from the code does not stop it working, and the new value is stored only in a server-side secret or environment variable, never in code or the client bundle. Steps: Contain and rotate the exposed key first, because removing it from the code does not stop it working: if you suspect it is being misused, revoke it at the provider now; otherwise create a replacement, put it in the app's server-side secret settings, confirm the app works with it, and then revoke the exposed key promptly; Remove the literal value from the code and any client-side bundle (the spot the scan shows), so the key is read only from a server-only environment variable; Make sure the .env file is in .gitignore; Clear the old value from deployed builds and caches, and from the repository's history where you can; once the key is revoked, a copy left there no longer works. Then tell me exactly what you changed, and do not print any secret values back to me or write one into a commit message, a pull request description or a log.

Then verify: After you deploy the fix, xlogs re-scans your live app and reports whether the key is still found in what it reads. That cannot show the old key was revoked, so revoke it at the provider either way.

Common questions

Does Base44 keep my app secure?

Not by itself. Base44 runs your app, but the moment you connect an outside service or database, the security of that connection is on you. A key can end up in the browser, or a connected database can be left readable. The scan checks the live app for both.

How do I check my Base44 app for exposed keys?

Paste your live Base44 URL into the scanner above. It reads the code your app ships and matches it against known key formats. It flags secret keys, not public ones that are designed to ship.