Hatás
A sorszintű biztonság (RLS) megvalósításának elmulasztása lehetővé teszi a hitelesítés nélküli támadók számára, hogy adatokat kérdezzenek le egy Supabase adatbázisból, amikor a nyilvános táblák a [S1] anon határon keresztül vannak kitéve. Mivel a Next.js alkalmazások jellemzően a Supabase anon kulcsot teszik ki az ügyféloldali kódban, a támadók ezzel a kulcssal közvetlenül REST API-t hajthatnak végre, valamint a felhasználói adatokhoz való hozzáférést az adatbázishoz, valamint az érzékeny alkalmazás-információk hívásait. [S2].
Kiváltó ok
Alapértelmezés szerint a Supabase Postgres tábláihoz a sorszintű biztonság kifejezett aktiválása szükséges a [S1] nyilvános hozzáférésének megakadályozása érdekében. Ha egy fejlesztő létrehoz egy táblát, de elfelejti engedélyezni a RLS-t, vagy nem definiál korlátozó házirendeket, az adatbázis bárkinek felfedheti az adatokat, aki rendelkezik a projekt anon [S1] kulcsával. A Next.js alkalmazásokban a kiszolgálóoldali megjelenítés és a kliensoldali lekérés is gondos Supabase ügyfélbeállítást igényel, hogy a hitelesített felhasználói kontextus elérje a [S2] adatbázisréteget.
Konkrét javítások
- A RLS engedélyezése: A
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;végrehajtása minden nyilvános táblánál, amely a [S1] alkalmazásadatokat tárolja. - Határozzon meg házirendeket: Hozzon létre konkrét házirendeket, amelyek korlátozzák a hozzáférést a felhasználó hitelesítési állapota alapján, például:
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - Biztonságos kiszolgálóoldali kliensek: A Next.js használatakor a szolgáltatási szerepkörű klienseket csak kiszolgálóként használja, és továbbra is alkalmazzon tulajdonosi szűrőket, mielőtt visszaküldi az adatokat a [S2] felhasználóknak.
Hogyan teszteli a FixVibe
A FixVibe már futtat egy írásvédett Supabase RLS ellenőrzést a baas.supabase-rls-n keresztül. A lapolvasó felfedezi a Supabase projekt URL-címét és a nyilvános anonkulcsot azonos eredetű JavaScript-kötegekből, nyilvános tábla metaadatokat kér a PostgREST-től, és megkísérli a korlátozott írásvédett kijelöléseket annak ellenőrzésére, hogy az adatok felhasználói munkamenet nélkül megjelennek-e. Nem illeszt be, frissít, nem töröl és nem használ szolgáltatási szerepkör hitelesítő adatokat. A repo-vizsgálatok ezt korábban is elkaphatják a repo.supabase.missing-rls-n keresztül, amely megjelöli az SQL-migrációkat, amelyek nyilvános táblákat hoznak létre ENABLE ROW LEVEL SECURITY nélkül.
