DEV Community

Cenk KURTOĞLU profile picture

Cenk KURTOĞLU

Security reviewer for AI-built Supabase apps. I find the leaks a linter cannot see: cross-tenant policy conflicts, unisolated joins, service-role key exposure, write-without-read holes.

Work

Independent Next.js + Supabase reviewer and production bug-fix developer

I re-verified 30 disclosed Supabase keys. 20% were still live.

I re-verified 30 disclosed Supabase keys. 20% were still live.

Comments
3 min read

Want to connect with Cenk KURTOĞLU?

Create an account to connect with Cenk KURTOĞLU. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
RLS is on, so why can another user see my data? 7 Supabase surfaces that leak anyway

RLS is on, so why can another user see my data? 7 Supabase surfaces that leak anyway

Comments
4 min read
The Supabase Security Checklist to Run Before You Launch

The Supabase Security Checklist to Run Before You Launch

Comments
6 min read
NEXT_PUBLIC_ and Supabase: Which Env Variables Are Safe to Expose?

NEXT_PUBLIC_ and Supabase: Which Env Variables Are Safe to Expose?

Comments
5 min read
You Committed .env to GitHub: What to Rotate (Supabase + Next.js)

You Committed .env to GitHub: What to Rotate (Supabase + Next.js)

Comments
6 min read
Test Your Supabase RLS Policies Locally: A Free SQL Harness

Test Your Supabase RLS Policies Locally: A Free SQL Harness

Comments
5 min read
Supabase RLS with auth.uid() not working? Causes and fixes

Supabase RLS with auth.uid() not working? Causes and fixes

Comments
6 min read
Is my Supabase anon key exposed? What's actually safe (and what isn't)

Is my Supabase anon key exposed? What's actually safe (and what isn't)

Comments
5 min read
Why Your 3D Model Won't Open on iPhone — and the No-Install GLB to USDZ Fix

Why Your 3D Model Won't Open on iPhone — and the No-Install GLB to USDZ Fix

Comments
3 min read
MCP configs are the new .env files — I found live database keys committed on GitHub

MCP configs are the new .env files — I found live database keys committed on GitHub

Comments 3
4 min read
GLB to USDZ in the Browser: How It Works and Why Your Files Never Leave Your Machine

GLB to USDZ in the Browser: How It Works and Why Your Files Never Leave Your Machine

Comments
4 min read
How I Audit Supabase Row Level Security in Client-Side Apps

How I Audit Supabase Row Level Security in Client-Side Apps

Comments
4 min read
From GitHub Issue Mining to Paid Security Retainers

From GitHub Issue Mining to Paid Security Retainers

Comments 1
3 min read
Stop Losing 3 Hours a Day to Copy-Paste Work

Stop Losing 3 Hours a Day to Copy-Paste Work

Comments
8 min read
Building an SEO Content System That Feeds a Solo Product Funnel

Building an SEO Content System That Feeds a Solo Product Funnel

Comments
4 min read
Supabase RLS Mistakes That Leak User Data

Supabase RLS Mistakes That Leak User Data

Comments
5 min read
Finding Exposed API Keys in Shipped Apps Responsibly

Finding Exposed API Keys in Shipped Apps Responsibly

Comments
4 min read
Finding Exposed API Keys in Shipped Apps Without Being a Jerk

Finding Exposed API Keys in Shipped Apps Without Being a Jerk

Comments
4 min read
Supabase RLS breaking change (Oct 30, 2026): 5-minute check to avoid 42501 errors

Supabase RLS breaking change (Oct 30, 2026): 5-minute check to avoid 42501 errors

Comments
2 min read
Supabase RLS Not Working? Fix It by Symptom

Supabase RLS Not Working? Fix It by Symptom

Comments
2 min read
RLS Write-Leak: The Silent Data Exposure That Lets Any User Modify Any Row

RLS Write-Leak: The Silent Data Exposure That Lets Any User Modify Any Row

Comments
3 min read
4 Security Holes Your AI-Generated Supabase App Has (Lovable, Cursor, Bolt, v0)

4 Security Holes Your AI-Generated Supabase App Has (Lovable, Cursor, Bolt, v0)

Comments
3 min read
Stop Losing 3 Hours a Day to Copy-Paste Work

Stop Losing 3 Hours a Day to Copy-Paste Work

Comments
8 min read
Prisma Migrations Hanging on Supabase Connection Poolers: Root Cause & Fix

Prisma Migrations Hanging on Supabase Connection Poolers: Root Cause & Fix

Comments
8 min read
Test RLS Policies Safely with Neon Branching

Test RLS Policies Safely with Neon Branching

Comments
7 min read
Supabase RLS Security: Why AI-Generated Code Is Leaking Your Data (And How to Fix It)

Supabase RLS Security: Why AI-Generated Code Is Leaking Your Data (And How to Fix It)

Comments
7 min read
Supabase Error 42501 "permission denied for table" — The October 30 Fix (Copy-Paste SQL)

Supabase Error 42501 "permission denied for table" — The October 30 Fix (Copy-Paste SQL)

Comments
3 min read
You Gave Your SECURITY DEFINER Function a Dedicated Owner Role. It Broke. Here's Why.

You Gave Your SECURITY DEFINER Function a Dedicated Owner Role. It Broke. Here's Why.

Comments
4 min read
Supabase's Default Privileges Expose Every New Table. Here's the Self-Healing Fix.

Supabase's Default Privileges Expose Every New Table. Here's the Self-Healing Fix.

Comments
5 min read
Supabase "permission denied" After October 30: The Exact Fix (Copy-Paste SQL)

Supabase "permission denied" After October 30: The Exact Fix (Copy-Paste SQL)

Comments
4 min read
I Scanned 100 Public Supabase Repos. Here's What I Found.

I Scanned 100 Public Supabase Repos. Here's What I Found.

Comments
3 min read
The Supabase Pre-Launch Security Checklist (Copy This Before Every Deploy)

The Supabase Pre-Launch Security Checklist (Copy This Before Every Deploy)

Comments
3 min read
Your Supabase App Breaks on October 30. Here's the 30-Minute Preparation Guide.

Your Supabase App Breaks on October 30. Here's the 30-Minute Preparation Guide.

Comments
4 min read
AI Built Your Supabase App and It Works. Here's What Breaks Next.

AI Built Your Supabase App and It Works. Here's What Breaks Next.

Comments
5 min read
Supabase RLS Not Working? Fix It by Symptom (5 Symptoms, 30-Second Check for Each)

Supabase RLS Not Working? Fix It by Symptom (5 Symptoms, 30-Second Check for Each)

Comments
5 min read
3 Supabase RLS Leaks I Found in Production Apps This Week (and the 30-Second Check for Each)

3 Supabase RLS Leaks I Found in Production Apps This Week (and the 30-Second Check for Each)

Comments 2
5 min read
I Found 60+ Live Supabase Keys in Public Repos, So I Benchmark Whether LLMs Can Spot Them

Kaggle Benchmarking Challenge Submission

I Found 60+ Live Supabase Keys in Public Repos, So I Benchmark Whether LLMs Can Spot Them

6
Comments 3
5 min read
58 of 154 public Supabase apps had a working service_role key in git

58 of 154 public Supabase apps had a working service_role key in git

Comments
3 min read
Supabase RLS: a small, evidence-first pre-launch check

Supabase RLS: a small, evidence-first pre-launch check

Comments
2 min read
October 30, 2026: the Supabase change that will 42501 your next deploy - and the leak that was already there

October 30, 2026: the Supabase change that will 42501 your next deploy - and the leak that was already there

Comments
4 min read
Supabase RLS returns rows it shouldn't (or throws 42501): the 6 real causes

Supabase RLS returns rows it shouldn't (or throws 42501): the 6 real causes

Comments
2 min read
The service_role Key Hiding in Your .mcp.json — the AI-Vibe-Coder Secret Leak

The service_role Key Hiding in Your .mcp.json — the AI-Vibe-Coder Secret Leak

Comments
5 min read
The Supabase Security Checklist to Run Before You Launch

The Supabase Security Checklist to Run Before You Launch

Comments
6 min read
NEXT_PUBLIC_ and Supabase: Which Env Variables Are Safe to Expose?

NEXT_PUBLIC_ and Supabase: Which Env Variables Are Safe to Expose?

Comments
5 min read
You Committed .env to GitHub: What to Rotate (Supabase + Next.js)

You Committed .env to GitHub: What to Rotate (Supabase + Next.js)

Comments
6 min read
Test Your Supabase RLS Policies Locally: A Free SQL Harness

Test Your Supabase RLS Policies Locally: A Free SQL Harness

Comments
5 min read
Supabase RLS with auth.uid() not working? Causes and fixes

Supabase RLS with auth.uid() not working? Causes and fixes

Comments
6 min read
Is my Supabase anon key exposed? What's actually safe (and what isn't)

Is my Supabase anon key exposed? What's actually safe (and what isn't)

Comments
5 min read
Your AI Coding Tool Is Committing Your Supabase service_role Key

Your AI Coding Tool Is Committing Your Supabase service_role Key

Comments
6 min read
Supabase RLS Not Working? Fix It by Symptom (Correct SQL Inside)

Supabase RLS Not Working? Fix It by Symptom (Correct SQL Inside)

Comments
5 min read
You shipped a Supabase app with AI. Here are the 4 security holes it probably has (and the 5-minute fixes)

You shipped a Supabase app with AI. Here are the 4 security holes it probably has (and the 5-minute fixes)

Comments
5 min read
New Row Violates Row-Level Security Policy: The Real Fix

New Row Violates Row-Level Security Policy: The Real Fix

Comments
4 min read
Supabase Storage Upload Fails With RLS (403: new row violates row-level security policy)

Supabase Storage Upload Fails With RLS (403: new row violates row-level security policy)

Comments
2 min read
Why Supabase RLS Returns Nothing or 42501 (auth.uid() Is Null on the Server)

Why Supabase RLS Returns Nothing or 42501 (auth.uid() Is Null on the Server)

Comments
3 min read
7 Ways Your Supabase App Still Leaks Data With RLS Enabled

7 Ways Your Supabase App Still Leaks Data With RLS Enabled

Comments
3 min read
Test your Supabase RLS before you ship: a free red/green fixture and the 9 SQL checks a linter cannot run

Test your Supabase RLS before you ship: a free red/green fixture and the 9 SQL checks a linter cannot run

Comments
4 min read
Your Supabase service_role key is probably in your browser bundle

Your Supabase service_role key is probably in your browser bundle

Comments
5 min read
Stripe doesn't support my country. Here's how you ship a paid product anyway (2026)

Stripe doesn't support my country. Here's how you ship a paid product anyway (2026)

Comments 1
2 min read
Two SQL queries that tell you whether your Supabase RLS is actually on

Two SQL queries that tell you whether your Supabase RLS is actually on

Comments
6 min read
Your Supabase service_role key is probably in your browser bundle

Your Supabase service_role key is probably in your browser bundle

Comments
5 min read
loading...