Effaith
Gall ymosodwyr osgoi rhesymeg cymhwysiad i ddarllen, diweddaru, neu ddileu cofnodion yn y gronfa ddata os nad yw Row Level Security (RLS) wedi'i orfodi'n gywir [S1]. Mae hyn yn aml yn arwain at ddatgelu Gwybodaeth Bersonol Adnabyddadwy (PII) neu ddata cymwysiadau sensitif i ddefnyddwyr sydd ond â mynediad at yr allwedd gyhoeddus ddienw API.
Achos Gwraidd
Mae Supabase yn defnyddio Postgres Row Level Security i reoli mynediad data ar lefel y gronfa ddata, sy'n hanfodol ar gyfer sicrhau data [S1]. Mewn amgylchedd Next.js, rhaid i ddatblygwyr greu cleient Supabase sy'n trin cwcis a sesiynau yn gywir i gynnal diogelwch wrth rendro ochr y gweinydd [S2]. Mae gwendidau fel arfer yn codi pan:
- Mae tablau'n cael eu creu heb alluogi RLS, gan eu gwneud yn hygyrch trwy'r allwedd gyhoeddus anon [S1].
- Mae'r cleient Supabase wedi'i gamgyflunio yn Next.js, gan fethu â throsglwyddo tocynnau dilysu defnyddwyr yn gywir i'r gronfa ddata [S2].
- Mae datblygwyr yn ddamweiniol yn defnyddio'r allwedd
service_rolemewn cod ochr y cleient, sy'n osgoi holl bolisïau RLS [S1].
Atgyweiriadau Concrit
- Galluogi RLS: Sicrhewch fod Diogelwch Lefel Rhes wedi'i alluogi ar gyfer pob tabl yn eich cronfa ddata Supabase [S1].
- Diffinio Polisïau: Creu polisïau Postgres penodol ar gyfer gweithrediadau
SELECT,INSERT,UPDATE, aDELETEi gyfyngu mynediad yn seiliedig ar weithrediadau'r defnyddiwr ar sail gweithrediadau'r defnyddiwr. - Defnyddio Cleientiaid SSR: Gweithredu'r pecyn
@supabase/ssri greu cleientiaid yn Next.js sy'n rheoli dilysu ochr y gweinydd yn gywir a dyfalbarhad sesiwn [S2].
Sut mae FixVibe yn ei brofi
Mae FixVibe eisoes yn ymdrin â hyn trwy wiriadau ap defnyddio a repo. Mae'r modiwl goddefol baas.supabase-rls yn darganfod URL Supabase a pharau di-allwedd o fwndeli JavaScript o'r un tarddiad, yn gofyn i PostgREST am fetadata tabl cyhoeddus, ac yn perfformio detholiadau darllen yn unig cyfyngedig i gadarnhau datguddiad data dienw heb dreiglo data cwsmeriaid. Mae sganiau Repo hefyd yn rhedeg repo.supabase.missing-rls i dynnu sylw at fudiadau SQL sy'n creu tablau cyhoeddus heb ENABLE ROW LEVEL SECURITY, ac mae sganiau cyfrinachol yn edrych am ddatguddiad allweddol swyddogaeth gwasanaeth cyn iddo gyrraedd y porwr.
