FixVibe
Covered by FixVibehigh

Beveilig van Next.js + Supabase: Voorkoming van ryvlaksekuriteit (RLS)

Toepassings gebou met Next.js en Supabase maak dikwels staat op ryvlaksekuriteit (RLS) om data te beskerm. Versuim om RLS te aktiveer of die verkeerde opstelling van die Supabase-kliënt kan lei tot volle databasisblootstelling, wat ongemagtigde gebruikers toelaat om sensitiewe rekords te lees of te wysig.

CWE-284

impak

Aanvallers kan toepassingslogika omseil om rekords in die databasis te lees, op te dateer of uit te vee as Ryvlaksekuriteit (RLS) nie behoorlik afgedwing word nie. [S1]. Dit lei dikwels tot die blootstelling van Persoonlik Identifiseerbare Inligting (PII) of sensitiewe toepassingsdata aan gebruikers wat slegs toegang het tot die publieke anonieme API-sleutel.

Oorsaak

Supabase gebruik Postgres Row Level Security om datatoegang op die databasisvlak te bestuur, wat fundamenteel is vir die beveiliging van data [S1]. In 'n Next.js-omgewing moet ontwikkelaars 'n Supabase-kliënt skep wat koekies en sessies korrek hanteer om sekuriteit te handhaaf tydens bedienerkant-weergawe [S2]. Kwesbaarhede ontstaan gewoonlik wanneer:

  • Tabelle word geskep sonder dat RLS geaktiveer is, wat hulle toeganklik maak via die publieke anonsleutel [S1].
  • Die Supabase-kliënt is verkeerd gekonfigureer in Next.js, en versuim om gebruikerstawingtekens behoorlik na die databasis [S2] deur te gee.
  • Ontwikkelaars gebruik per ongeluk die service_role sleutel in kliënt-kant kode, wat alle RLS beleide [S1] omseil.

Betonoplossings

  • Aktiveer RLS: Maak seker dat ryvlaksekuriteit vir elke tabel in jou Supabase-databasis [S1] geaktiveer is.
  • Definieer Beleide: Skep spesifieke Postgres-beleide vir SELECT, INSERT, UPDATE, en DELETE-bewerkings om toegang te beperk op grond van die gebruiker se UID ZXCVVFIXBETOKEN.
  • Gebruik SSR-kliënte: Implementeer die @supabase/ssr-pakket om kliënte in Next.js te skep wat bedienerkant-verifikasie en sessievolharding [S2] korrek bestuur.

Hoe FixVibe daarvoor toets

FixVibe dek dit reeds deur ontplooide toepassings en repo-tjeks. Die passiewe baas.supabase-rls-module ontdek Supabase-URL- en anon-sleutel-pare van dieselfde-oorsprong JavaScript-bundels, vra PostgREST vir publieke tabel-metadata, en voer beperkte leesalleen-keuses uit om anonieme datablootstelling te bevestig sonder om kliëntdata te muteer. Repo-skanderings loop ook repo.supabase.missing-rls om SQL-migrasies te vlag wat publieke tabelle sonder ENABLE ROW LEVEL SECURITY skep, en geheime skanderings soek na diensrol-sleutelblootstelling voordat dit die blaaier bereik.