FixVibe
Covered by FixVibehigh

Að tryggja Next.js + Supabase: Koma í veg fyrir öryggi í röðum (RLS)

Forrit byggð með Next.js og Supabase treysta oft á Row Level Security (RLS) til að vernda gögn. Misbrestur á að virkja RLS eða rangstilling á Supabase biðlara getur leitt til fullrar gagnagrunnsútsetningar, sem gerir óviðkomandi notendum kleift að lesa eða breyta viðkvæmum gögnum.

CWE-284

Áhrif

Árásarmenn geta framhjá rökfræði forrita til að lesa, uppfæra eða eyða skrám í gagnagrunninum ef Row Level Security (RLS) er ekki rétt framfylgt [S1]. Þetta leiðir oft til þess að persónugreinanlegar upplýsingar (PII) eða viðkvæm forritsgögn verða birt fyrir notendum sem hafa aðeins aðgang að opinberum nafnlausum API lykli.

Orsök

Supabase notar Postgres Row Level Security til að stjórna gagnaaðgangi á gagnagrunnsstigi, sem er grundvallaratriði til að tryggja gögn [S1]. Í Next.js umhverfi verða þróunaraðilar að búa til Supabase biðlara sem meðhöndlar kökur og lotur á réttan hátt til að viðhalda öryggi við flutning [S2] á miðlarahlið. Veikleikar koma venjulega upp þegar:

  • Töflur eru búnar til án þess að RLS sé virkt, sem gerir þær aðgengilegar með opinbera anon-lyklinum [S1].
  • Supabase biðlarinn er rangt stilltur í Next.js, og tekst ekki að senda auðkenningartákn notenda til gagnagrunnsins [S2].
  • Hönnuðir nota óvart service_role lykilinn í kóða viðskiptavinarhliðar, sem framhjá öllum RLS stefnum [S1].

Steinsteypa lagfæringar

  • Virkja RLS: Gakktu úr skugga um að Row Level Security sé virkt fyrir hvert borð í Supabase gagnagrunninum þínum [S1].
  • Skilgreindu stefnur: Búðu til sérstakar Postgres-stefnur fyrir SELECT, INSERT, UPDATE og DELETE aðgerðir til að takmarka aðgang byggt á UID ZXCVIXBETOKEN notandans.
  • Notaðu SSR viðskiptavini: Innleiða @supabase/ssr pakkann til að búa til viðskiptavini í Next.js sem stjórna rétt auðkenningu miðlara og setuþol [S2].

Hvernig FixVibe prófar það

FixVibe nær nú þegar yfir þetta í gegnum innleitt forrit og endurgreiðslueftirlit. Óvirka baas.supabase-rls einingin uppgötvar Supabase vefslóð og ólyklapör úr JavaScript búntum af sama uppruna, biður PostgREST um opinber lýsigögn í töflum og framkvæmir takmarkað skrifvarið val til að staðfesta nafnlausa gagnalýsingu án þess að stökkbreyta gögnum viðskiptavina. Endurtekningaskannanir keyra einnig repo.supabase.missing-rls til að flagga SQL-flutningar sem búa til opinberar töflur án ENABLE ROW LEVEL SECURITY, og leynilegar skannanir leita að útsetningu þjónustuhlutverkslykils áður en hún nær til vafrans.