Epekto
Maaaring i-bypass ng mga attacker ang logic ng application upang basahin, i-update, o tanggalin ang mga tala sa database kung ang Row Level Security (RLS) ay hindi maayos na ipinatupad [S1]. Madalas itong nagreresulta sa pagkakalantad ng Personally Identifiable Information (PII) o sensitibong data ng application sa mga user na may access lamang sa pampublikong anonymous na API key.
Root Cause
Gumagamit ang Supabase ng Postgres Row Level Security upang pamahalaan ang pag-access ng data sa antas ng database, na mahalaga para sa pag-secure ng data na [S1]. Sa isang Next.js environment, ang mga developer ay dapat gumawa ng Supabase client na wastong humahawak ng cookies at session upang mapanatili ang seguridad sa server-side na pag-render ng [S2]. Karaniwang nangyayari ang mga kahinaan kapag:
- Ginagawa ang mga talahanayan nang hindi naka-enable ang RLS, na ginagawang naa-access ang mga ito sa pamamagitan ng pampublikong anon key na [S1].
- Ang kliyente ng Supabase ay mali ang pagkaka-configure sa Next.js, hindi naipasa nang maayos ang mga token ng pagpapatunay ng user sa database na [S2].
- Hindi sinasadyang ginamit ng mga developer ang
service_rolekey sa client-side code, na lumalampas sa lahat ng RLS na patakaran [S1].
Mga Konkretong Pag-aayos
- I-enable ang RLS: Tiyaking naka-enable ang Row Level Security para sa bawat talahanayan sa iyong Supabase database [S1].
- Tukuyin ang Mga Patakaran: Lumikha ng mga partikular na patakaran ng Postgres para sa
SELECT,INSERT,UPDATE, atDELETEna mga pagpapatakbo upang paghigpitan ang pag-access batay sa mga pagpapatakbo ng ZXVIXVIXFIX ng user. - Gumamit ng Mga SSR Client: Ipatupad ang
@supabase/ssrpackage upang lumikha ng mga kliyente sa Next.js na namamahala nang tama sa server-side authentication at session persistence [S2].
Paano sinusuri ito ng FixVibe
Sinasaklaw na ito ng FixVibe sa pamamagitan ng deployed-app at repo checks. Natuklasan ng passive na baas.supabase-rls module ang Supabase na URL at mga pares ng anon-key mula sa parehong-origin na mga bundle ng JavaScript, humihingi sa PostgREST para sa metadata ng pampublikong talahanayan, at nagsasagawa ng limitadong read-only na mga pinili upang kumpirmahin ang anonymous na pagkakalantad ng data nang hindi nagmu-mutate ng data ng customer. Ang mga Repo scan ay nagpapatakbo din ng repo.supabase.missing-rls upang i-flag ang mga paglilipat ng SQL na gumagawa ng mga pampublikong talahanayan nang walang ENABLE ROW LEVEL SECURITY, at ang mga lihim na pag-scan ay naghahanap ng pagkakalantad sa pangunahing tungkulin ng serbisyo bago ito makarating sa browser.
