impak
Versuim om ryvlaksekuriteit (RLS) te implementeer, laat ongeverifieerde aanvallers toe om data van 'n Supabase-databasis navraag te doen wanneer publieke tabelle deur die anon-grens [S1] blootgestel word. Omdat Next.js-toepassings tipies die Supabase anon-sleutel in kliënt-kant-kode blootstel, kan 'n aanvaller hierdie sleutel gebruik om direkte REST API-oproepe na die databasis te maak, deur toegang tot die beoogde sensitiewe gebruiker-inligting te omseil en [S2].
Oorsaak
Postgres-tabelle in Supabase vereis by verstek eksplisiete aktivering van ryvlaksekuriteit om publieke toegang [S1] te voorkom. Wanneer 'n ontwikkelaar 'n tabel skep, maar vergeet om RLS te aktiveer of versuim om beperkende beleide te definieer, kan die databasis data blootstel aan enigiemand wat die projek se anon-sleutel [S1] besit. In Next.js-toepassings vereis bediener-kant-weergawe en kliënt-kant haal ook versigtige Supabase kliëntopstelling sodat geverifieerde gebruikerkonteks die databasislaag [S2] bereik.
Betonoplossings
- Aktiveer RLS: Voer
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;uit vir elke publieke tabel wat programdata berg [S1]. - Definieer beleide: Skep spesifieke beleide wat toegang beperk op grond van die gebruiker se stawingstatus, soos
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - Veilige bedienerkantkliënte: Wanneer u Next.js gebruik, hou diensrolkliënte slegs bedieners en pas steeds eienaarskapfilters toe voordat data aan gebruikers [S2] teruggestuur word.
Hoe FixVibe daarvoor toets
FixVibe voer reeds 'n leesalleen Supabase RLS-tjek deur baas.supabase-rls uit. Die skandeerder ontdek die Supabase-projek-URL en publieke anonsleutel van dieselfde-oorsprong JavaScript-bundels, vra PostgREST vir publieke tabel-metadata, en probeer beperkte leesalleen-seleksies om te bevestig of data sonder 'n gebruikersessie blootgestel word. Dit voeg nie diensrolbewyse in, bywerk, vee uit of gebruik nie. Repo-skanderings kan dit ook vroeër vang deur repo.supabase.missing-rls, wat SQL-migrasies vlag wat publieke tabelle sonder ENABLE ROW LEVEL SECURITY skep.
