Browse the blog
Sentrint Blog
Lovable · Is it safe?

Is Lovable safe? What it secures, and what it leaves to you

Lovable is safe in the parts it owns: hosting, HTTPS, and keeping the servers patched. It does not own your authorisation logic, your API keys, your Supabase row rules or your paywall, and that is where almost every real breach in an AI-built app happens. Safe platform, exposed app, is the normal outcome.

You built an app with Lovable. It loads, people can sign up, data saves. Now somebody has asked whether it is secure, or you have asked yourself, and the honest answer is that the question has two halves and only one of them is about Lovable.

Lovable is a competent platform. The parts it runs, it runs properly. But a platform can only secure the things it controls, and the code it wrote for you is not one of them. That is not a criticism of Lovable. It is true of Bolt, v0, Cursor and every other tool of this shape, and it is true of a hand-written Rails app on Heroku.

What does Lovable secure for you?

Four things, and all four are real. None of them are the kind of claim that falls apart when you look closely.

HTTPS and SSL. Every connection to a Lovable-hosted app is encrypted, and the certificate is handled for you. If you added a custom domain, check the padlock once, but this is not where your risk is.

Hosting and infrastructure patches. The operating system and runtime under your app get updated without you. This is the class of problem that used to keep small teams awake, and it is genuinely solved.

Basic denial-of-service protection. A traffic spike will not immediately take you down.

A security scan on publish. Lovable's own documentation describes an automatic check that runs when you publish, looking at database configuration, row-level security rules and cloud settings. It is worth running. It is also, by its own description, a check of configuration rather than a read of your application's logic.

That last distinction is the whole article. A check of configuration and a read of your logic are different jobs, and only one of them has been done.

What does Lovable not secure?

Everything that is specific to your app. Concretely:

Who can see whose data. If a user can change /orders/1041 to /orders/1042 in the address bar and see somebody else's order, you have the single most common serious flaw in apps of this kind. It looks perfect when you test it, because you only ever test your own account.

Your API keys. A key that ends up in browser JavaScript is readable by anyone who opens developer tools. If it is an OpenAI or Stripe key, you are paying for whatever they do with it.

Supabase row-level security. RLS is off by default on a new table. If you did not turn it on, the rows in that table may be readable by anyone who has your project URL, which is in your frontend code.

Your paywall. Hiding a premium feature with CSS is not a paywall. If the endpoint answers without checking a subscription, the feature is free to anyone willing to look.

Input handling. Whether a comment box stores <script> and runs it for the next reader is your code's problem, not the platform's.

None of these produce an error. Your app does not crash, no log line appears, nothing turns red. That is precisely why they survive to production: the only signal that they exist is somebody finding them.

Why do AI builders leave these holes?

Because you did not ask for them to be closed, and the model builds what you asked for. Nothing about the request was wrong; it was simply incomplete in a way that has no visible symptom.

"Let users save their favourites" is a complete instruction to a language model and an incomplete one to a security engineer. The model writes a working save-favourites feature. Whether user A can read user B's favourites is a question the prompt never raised, so the answer is usually no rule at all rather than the wrong rule.

The same goes for "make it work on my phone too" or "fix this error". The second is how a permission gets widened from this user to anyone, and then stays that way, because the error went away and nothing suggested the fix had cost anything.

How do I check my own app?

Four checks, about twenty minutes, in the order that matters. Stop at the first one that fails rather than working through all four.

  1. Make a second account. Log in as user B and paste a URL that belongs to user A. If you can see A's data, stop reading and fix that first.
  2. Open your deployed site, view source, and search for sk-, key, secret and token. Anything that looks like a live credential is a live credential.
  3. Open Supabase, go to your table list, and look at the RLS column. Any table that says disabled is readable.
  4. As a free user, call a premium endpoint directly. If it answers, your paywall is decoration.

If all four come back clean, you are ahead of most apps of this kind. If any of them does not, you now know the first thing to fix, which is more than you knew this morning.

Is a checklist enough?

For four checks, yes. For the rest, no, and it is worth being straight about why.

A checklist only finds what it lists, and it only looks where you point it. The flaws above are the common ones because they are the ones people know to look for. The reason automated scanning exists is that a codebase has more surface than a person will read on a Tuesday afternoon, and the flaw that gets exploited is usually in the file nobody thought to open.

That is what Sentrint does. It reads your whole repository and tells you what an attacker would find first, in plain English, with a fix you can paste back into Lovable. It is a code scan, not a pentest: it reads what you wrote, it does not attack your running site. The first scan is free and does not need a card.

Either way, do the four checks. They take twenty minutes and they cover the flaws that actually get people.

More on Lovable
Enough reading. See your own findings.
A free scan turns this into a list of what to fix, in order.
Run your free scan