FixVibe
Covered by FixVibehigh

Next.js + Supabase ziurtatzea: Errenkada-mailako segurtasuna (RLS) saihestea

Next.js eta Supabase-ekin eraikitako aplikazioek errenkada-mailako segurtasunean (RLS) oinarritzen dira maiz datuak babesteko. RLS gaitzen ez badira edo Supabase bezeroa gaizki konfiguratzeak datu-basearen erabateko erakusketa eragin dezake, baimenik gabeko erabiltzaileek erregistro sentikorrak irakurtzeko edo aldatzeko aukera emanez.

CWE-284

Eragina

Erasotzaileek aplikazioaren logika saihestu dezakete datu-baseko erregistroak irakurtzeko, eguneratzeko edo ezabatzeko, errenkada-mailako segurtasuna (RLS) behar bezala ezartzen ez bada [S1]. Honen ondorioz, sarritan, Pertsonalki Identifika daitekeen Informazioa (PII) edo aplikazio-datuak API gako publiko anonimorako sarbidea soilik duten erabiltzaileei agerian jartzen dira.

Arrazoia

Supabase-k Postgres Row Level Security erabiltzen du datu-base mailan datu-sarbidea kudeatzeko, eta hori oinarrizkoa da datuak ziurtatzeko [S1]. Next.js ingurune batean, garatzaileek cookieak eta saioak behar bezala kudeatzen dituzten Supabase bezero bat sortu behar dute, zerbitzariaren aldetik [S2] errendatzean segurtasuna mantentzeko. Ahultasunak normalean gertatzen dira:

  • Taulak RLS gaiturik gabe sortzen dira, [S1] gako publikoaren bidez eskuragarri izateko.
  • Supabase bezeroa gaizki konfiguratuta dago Next.js-n, erabiltzaileen autentifikazio-tokenak behar bezala pasatzen ez dituen [S2] datu-basera.
  • Garatzaileek ustekabean erabiltzen dute service_role gakoa bezeroaren alboko kodean, eta horrek RLS gidalerro guztiak saihesten ditu [S1].

Konponketa konkretuak

  • Gaitu RLS: Ziurtatu errenkada-mailako segurtasuna gaituta dagoela zure Supabase datu-baseko [S1] taula guztietan.
  • Definitu Politikak: Sortu Postgres politika espezifikoak SELECT, INSERT, UPDATE eta DELETE eragiketetarako sarbidea mugatzeko, erabiltzailearen INSERT4 ZXCVFIX VIBEXTOKVIX erabiltzailearen arabera.
  • Erabili SSR bezeroak: Ezar ezazu @supabase/ssr paketea zerbitzariaren aldeko autentifikazioa eta saioaren iraunkortasuna behar bezala kudeatzen duten Next.js-n bezeroak sortzeko.

FixVibe probak nola egiten dituen

FixVibe-k dagoeneko estaltzen du inplementatutako aplikazioen eta repo kontrolen bidez. baas.supabase-rls modulu pasiboak Supabase URLa eta gako ezohiko bikoteak deskubritzen ditu jatorri bereko JavaScript sortetatik, PostgREST taula publikoko metadatuak eskatzen dizkio eta irakurtzeko soilik aukeraketa mugatuak egiten ditu datu anonimoak esposizioa berresteko, bezeroen datuak aldatu gabe. Repo eskaneatzeek repo.supabase.missing-rls ere exekutatzen dute ENABLE ROW LEVEL SECURITY gabe taula publikoak sortzen dituzten SQL migrazioak markatzeko, eta sekretuek arakatzailera iritsi aurretik zerbitzu-rolen gakoen erakustaldia bilatzen dute.