Effaith
Mae methu â gweithredu Diogelwch Lefel Rhes (RLS) yn caniatáu i ymosodwyr heb eu dilysu holi data o gronfa ddata Supabase pan fydd tablau cyhoeddus yn cael eu hamlygu trwy'r ffin anon [S1]. Oherwydd bod cymwysiadau Next.js fel arfer yn datgelu'r allwedd Supabase anon mewn cod ochr y cleient, gall ymosodwr ddefnyddio'r allwedd hon i wneud galwadau REST API yn uniongyrchol i'r gronfa ddata, gan osgoi galwadau sensitif i'r gronfa ddata, gan osgoi'r wybodaeth a fwriadwyd gan ddefnyddwyr. [S2].
Achos Gwraidd
Yn ddiofyn, mae tablau Postgres yn Supabase yn gofyn am actifadu Diogelwch Lefel Rhes yn benodol i atal mynediad cyhoeddus [S1]. Pan fydd datblygwr yn creu tabl ond yn anghofio galluogi RLS neu'n methu â diffinio polisïau cyfyngol, gall y gronfa ddata ddatgelu data i unrhyw un sy'n meddu ar allwedd anon y prosiect [S1]. Mewn cymwysiadau Next.js, mae angen gosod cleient Supabase yn ofalus ar gyfer rendro ochr y gweinydd a nôl ochr y cleient fel bod cyd-destun defnyddiwr dilys yn cyrraedd haen y gronfa ddata [S2].
Atgyweiriadau Concrit
- Galluogi RLS: Gweithredu
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;ar gyfer pob bwrdd cyhoeddus sy'n storio data ap [S1]. - Diffinio Polisïau: Creu polisïau penodol sy'n cyfyngu mynediad yn seiliedig ar statws dilysu'r defnyddiwr, megis
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - Cleientiaid Diogel ar Ochr y Gweinydd: Wrth ddefnyddio Next.js, cadwch swyddogaeth gwasanaeth cleientiaid gweinydd yn unig a dal i gymhwyso hidlwyr perchnogaeth cyn dychwelyd data i ddefnyddwyr [S2].
Sut mae FixVibe yn ei brofi
Mae FixVibe eisoes yn rhedeg siec darllen-yn-unig Supabase RLS trwy baas.supabase-rls. Mae'r sganiwr yn darganfod URL prosiect Supabase ac allwedd gyhoeddus ddienw o fwndeli JavaScript o'r un tarddiad, yn gofyn i PostgREST am fetadata tabl cyhoeddus, ac yn ceisio detholion darllen yn unig cyfyngedig i gadarnhau a yw data'n cael ei ddatgelu heb sesiwn defnyddiwr. Nid yw'n mewnosod, diweddaru, dileu, neu ddefnyddio tystlythyrau rôl gwasanaeth. Gall sganiau Repo hefyd ddal hyn yn gynharach trwy repo.supabase.missing-rls, sy'n tynnu sylw at fudiadau SQL sy'n creu tablau cyhoeddus heb ENABLE ROW LEVEL SECURITY.
