Ndikimi
Sulmuesit mund të anashkalojnë logjikën e aplikacionit për të lexuar, përditësuar ose fshirë të dhënat në bazën e të dhënave nëse Siguria e nivelit të rreshtit (RLS) nuk zbatohet siç duhet [S1]. Kjo shpesh rezulton në ekspozimin e informacionit personalisht të identifikueshëm (PII) ose të dhënave të ndjeshme të aplikacionit për përdoruesit që kanë akses vetëm në çelësin publik anonim API.
Shkaku rrënjësor
Supabase përdor Postgres Row Level Security për të menaxhuar aksesin e të dhënave në nivelin e bazës së të dhënave, gjë që është thelbësore për sigurimin e të dhënave [S1]. Në një mjedis Next.js, zhvilluesit duhet të krijojnë një klient Supabase që trajton saktë skedarët dhe seancat për të ruajtur sigurinë gjatë paraqitjes së [S2] nga ana e serverit. Dobësitë zakonisht lindin kur:
- Tabelat krijohen pa RLS të aktivizuar, duke i bërë ato të aksesueshme nëpërmjet çelësit anon publik [S1].
- Klienti Supabase është konfiguruar gabim në Next.js, duke dështuar të kalojë siç duhet argumentet e vërtetimit të përdoruesit në bazën e të dhënave [S2].
- Zhvilluesit përdorin aksidentalisht çelësin
service_rolenë kodin e klientit, i cili anashkalon të gjitha politikat RLS [S1].
Rregullime konkrete
- Aktivizo RLS: Sigurohu që Siguria e nivelit të rreshtit është aktivizuar për çdo tabelë në bazën e të dhënave Supabase [S1].
- Përcaktoni politikat: Krijoni politika specifike Postgres për
SELECT,INSERT,UPDATEdheDELETEpër të kufizuar operacionet e përdoruesit në bazë të UID [S1]. - Përdor klientët SSR: Zbatoni paketën
@supabase/ssrpër të krijuar klientë në Next.js që menaxhojnë saktë vërtetimin nga ana e serverit dhe qëndrueshmërinë e sesionit [S2].
Si e teston FixVibe për të
FixVibe tashmë e mbulon këtë nëpërmjet kontrolleve të aplikacioneve të vendosura dhe repove. Moduli pasiv baas.supabase-rls zbulon URL-në Supabase dhe çiftet anon-çelës nga paketat JavaScript me origjinë të njëjtë, kërkon PostgREST për meta të dhënat publike të tabelës dhe kryen zgjedhje të kufizuara vetëm për lexim për të konfirmuar ekspozimin anonim të të dhënave të klientit pa ndryshuar ndryshimin e të dhënave. Skanimet e repove ekzekutojnë gjithashtu repo.supabase.missing-rls për të raportuar migrimet SQL që krijojnë tabela publike pa ENABLE ROW LEVEL SECURITY dhe skanimet sekrete kërkojnë ekspozimin e çelësit të rolit të shërbimit përpara se ai të arrijë në shfletues.
