FixVibe
Covered by FixVibehigh

Inalinda Next.js + Supabase: Kuzuia Njia za Kupita za Kiwango cha Safu (RLS)

Programu zilizoundwa kwa Next.js na Supabase mara nyingi hutegemea Usalama wa Ngazi ya Mstari (RLS) kulinda data. Kukosa kuwezesha RLS au kusanidi vibaya mteja wa Supabase kunaweza kusababisha ufichuaji kamili wa hifadhidata, kuruhusu watumiaji ambao hawajaidhinishwa kusoma au kurekebisha rekodi nyeti.

CWE-284

Athari

Wavamizi wanaweza kukwepa mantiki ya programu kusoma, kusasisha, au kufuta rekodi katika hifadhidata ikiwa Usalama wa Kiwango cha Safu (RLS) haujatekelezwa ipasavyo [S1]. Hii mara nyingi husababisha kufichuliwa kwa Taarifa Inayotambulika Binafsi (PII) au data nyeti ya programu kwa watumiaji ambao wanaweza tu kufikia ufunguo wa API usiojulikana wa umma.

Chanzo Chanzo

Supabase hutumia Usalama wa Kiwango cha Safu ya Postgres kudhibiti ufikiaji wa data katika kiwango cha hifadhidata, ambayo ni ya msingi katika kupata data [S1]. Katika mazingira ya Next.js, wasanidi lazima waunde mteja wa Supabase ambaye anashughulikia kwa usahihi vidakuzi na vipindi ili kudumisha usalama wakati wa uwasilishaji wa upande wa seva [S2]. Udhaifu kwa kawaida hutokea wakati:

  • Majedwali yameundwa bila RLS kuwezeshwa, na kuzifanya zipatikane kupitia ufunguo wa anon wa umma [S1].
  • Kiteja cha Supabase kimewekwa vibaya katika Next.js, na kushindwa kupitisha ipasavyo tokeni za uthibitishaji wa mtumiaji kwenye hifadhidata [S2].
  • Wasanidi hutumia kimakosa ufunguo wa service_role katika msimbo wa upande wa mteja, ambao unakwepa sera zote za RLS [S1].

Marekebisho ya Zege

  • Washa RLS: Hakikisha Usalama wa Kiwango cha Safu umewashwa kwa kila jedwali katika hifadhidata yako ya Supabase [S1].
  • Bainisha Sera: Unda sera mahususi za Postgres za SELECT, INSERT, UPDATE, na DELETE shughuli ili kuzuia ufikiaji kulingana na UVIBETOX ya mtumiaji4ZVXVX.
  • Tumia Wateja wa SSR: Tekeleza kifurushi cha @supabase/ssr ili kuunda wateja katika Next.js ambayo inadhibiti kwa usahihi uthibitishaji wa upande wa seva na kuendelea kwa kipindi [S2].

Jinsi FixVibe inavyoifanyia majaribio

FixVibe tayari inashughulikia hii kupitia ukaguzi wa programu-tumizi na repo. Sehemu tuli ya baas.supabase-rls hugundua URL ya Supabase na jozi zisizo za ufunguo kutoka kwa vifurushi vya JavaScript vya asili moja, huuliza PostgREST kwa metadata ya jedwali la umma, na kufanya chaguo chache za kusoma tu ili kuthibitisha kufichuliwa kwa data bila kutambulisha mtu bila kubadilisha data ya mteja. Uchanganuzi wa repo pia huendesha repo.supabase.missing-rls ili kuripoti uhamaji wa SQL ambao huunda majedwali ya umma bila ENABLE ROW LEVEL SECURITY, na uchanganuzi wa siri hutafuta udhihirisho wa ufunguo wa jukumu la huduma kabla haujafika kwenye kivinjari.