top of page
Security, Governance & AI Operations

Data Leak in Your App? Find and Close It

Users seeing other people's data, or private records reachable from outside? We find every leak and lock it down.

A data leak in an app happens when private data becomes visible to people who shouldn't see it, usually through missing access checks, misconfigured database rules, public storage or over-exposed API responses.

Reviewed by: Codersarts Security Engineering Team · Last updated: November 2026



What it means when your app has a data leak


A data leak means private information is reachable by people who shouldn't see it: one customer viewing another's invoices, a public link to a storage bucket of user uploads, or an API that returns full user records when the app only shows a name.


Most leaks aren't hacks. They're access checks that were never written. The app's interface hides the data, but the API or database still hands it to anyone who asks the right way.



Symptoms: you're in the right place if


  • A user reported seeing someone else's data

  • Changing a number in the URL or API request shows another record

  • API responses contain email addresses, phone numbers or fields the app never displays

  • Supabase's security advisor or Firebase warns that data is publicly accessible

  • Files are stored in public buckets with guessable links

  • Your app was built quickly or with AI tools and access rules were never reviewed


If a user can see one record that isn't theirs, assume others can too. Leaks are usually systematic, not one-off.


Business function


Business functions affected: Engineering, Product, Legal, and Customer Support.


Typical owner: CTO or lead engineer, with the founder involved if customers are affected.


Common stage: Early-stage and growth products, especially apps built with Supabase, Firebase or AI builders, and products that added teams or multi-tenancy later.



Is this the right help for you?


A good fit if:


  • Users can see data that isn't theirs

  • You use Supabase, Firebase or a custom API and aren't sure the rules are right

  • You need to know exactly what was exposed and to whom

  • You're adding organizations or multi-tenancy


Not the right fit if:


  • Your systems were broken into by an attacker: see app got hacked

  • You need legal advice on breach notification: involve a lawyer alongside us



First steps if you find a data leak


  1. Confirm the leak with a test account, not real customer data

  2. Restrict or disable the affected endpoint, table or bucket if you can do it safely

  3. Check logs to estimate how long it was open and who accessed it

  4. Rotate any service keys that were exposed

  5. Check your notification duties under GDPR, the DPDP Act or customer contracts



Business impact: what it costs to leave it unfixed


  • Privacy breach: personal or business data seen by the wrong people.

  • Legal duties: GDPR and the DPDP Act may require notification.

  • Lost deals: enterprise buyers walk away from products that leak data.

  • Churn: customers leave when they learn their data was visible to others.



Root causes: why apps leak data


Missing ownership checks

The API checks that a user is logged in but not that the record belongs to them.


Database rules too broad

Supabase RLS disabled or set to allow everyone; Firebase rules left in test mode.


Over-exposed API responses

Endpoints return whole database rows instead of only the fields the app needs.


Public storage

Buckets or file links that anyone with the URL can open.


Multi-tenancy added later

Team or organization boundaries were never built into queries.



Common data leak scenarios


Scenario

Usual cause

First fix

User sees another customer's orders

No ownership check on the API

Add server-side ownership checks

Supabase table readable by anyone

RLS disabled or policy using (true)

Enable RLS with owner and tenant policies

Firestore readable by all users

Rules check login only

Add per-document ownership rules

Uploaded files open via link

Public storage bucket

Make private and use signed URLs

Profile API returns hashed passwords

Whole rows serialized

Return only the fields the client needs



Data exposure checklist


Every “no” is a likely gap.


API


  • Does every endpoint check that the user may access that specific record?

  • Do responses contain only the fields the app needs?


Database


  • Is row-level security or equivalent enabled on every table?

  • Are service or admin keys kept on the server only?


Storage


  • Are buckets private with signed or expiring links?

  • Are user uploads separated by user or tenant?


Testing


  • Do you test access as two different users and two tenants?

  • Do tests run before every release?



Potential solution family


Solution type: Fix. We close every leak and prove it with tests.


Solution family: Access control and data security engineering: API authorization, database row-level rules, storage policies and automated access tests.



How we fix it: closing data leaks


1. Map the data

List every table, endpoint and bucket that holds private data and who should see it.


2. Test like an attacker

Query everything as anonymous users, normal users and other tenants.


3. Fix access control

Add ownership and tenant checks in the API and database rules.


4. Trim responses

Return only the fields each screen needs.


5. Lock down storage

Make buckets private and switch to signed URLs.


6. Add tests

Automated access tests that run before every release.



Typical timeline


Phase

Typical duration

Fixed-price audit (Supabase or Firebase)

1 day

API access review

2–5 days

Fixes and access tests

1–2 weeks

Multi-tenant redesign, if needed

2–6 weeks


Most leaks can be closed within days once found. Redesign is only needed when tenancy was never modeled.



Mistakes to avoid


  • Hiding data in the interface instead of blocking it in the API

  • Testing only as an admin user

  • Enabling RLS without policies, which breaks the app and leads teams to disable it again

  • Using a service-role key in the frontend to make errors go away

  • Fixing one endpoint and assuming the rest are fine



Required skills




Relevant technologies




Diagnosis offer: start with a fixed-price access audit


If you use Supabase, start with a fixed-price RLS audit. For Firebase, use the security rules audit. For custom APIs, start with an API security review.


What you get:


  • A table-by-table or endpoint-by-endpoint exposure report

  • Tests run as each role and tenant

  • Fixed rules or code changes

  • Confirmation that the leak is closed




Proof


Example engagement: marketplace leaking order data

An illustrative example based on the pattern we see most often. Client details are kept confidential.


The situation: A marketplace built with an AI app builder received a report that one seller could see another seller's orders.


What we found:


  • RLS was enabled on 9 of 14 Supabase tables

  • The orders and messages tables had no policies

  • A storage bucket of invoices was public


What we changed:


  • Added owner and tenant RLS policies on every table

  • Made the bucket private with signed URLs

  • Added access tests for two sellers and two buyers


The result: Each user now sees only their own data, and the tests catch regressions before release.


Why buyers trust Codersarts

  • Delivering software, cloud and security engineering for clients worldwide since 2018

  • A managed in-house engineering team, not a freelancer marketplace

  • Security engineers who are also developers, so we fix what we find

  • Testing only with written authorization and agreed scope

  • Confidential by default: we sign NDAs before accessing your code or accounts



Frequently asked questions


How do I know if my app is leaking data?

Log in as one test user and try to access another user's records by changing IDs in URLs and API requests. Also check database rules and storage buckets.

Not always. Many leaks come from missing access checks that anyone can stumble on, without breaking into anything.

Supabase gives strong tools, but security depends on row-level security policies. Tables without RLS, or with broad policies, can expose data.

Possibly, depending on what was exposed and the laws that apply, such as GDPR or India's DPDP Act. Get legal advice.

Usually within days. A Supabase or Firebase audit with fixes typically takes one day.



Related problems


bottom of page