Təsir
Sıra Səviyyəsi Təhlükəsizliyinin (RLS) həyata keçirilməməsi, ictimai cədvəllər [S1] anon sərhədindən keçdikdə, təsdiqlənməmiş təcavüzkarlara Supabase verilənlər bazasından məlumatları sorğulamağa imkan verir. Next.js proqramları adətən müştəri kodunda Supabase anon açarını ifşa etdiyinə görə, təcavüzkar bu açardan birbaşa REST API zəngləri etmək və verilənlər bazasına daxil olmaq və istifadəçi məlumatlarına daxil olmaq üçün istifadə edə bilər. [S2].
Kök Səbəb
Defolt olaraq, Supabase-də Postgres cədvəlləri ictimai girişin qarşısını almaq üçün [S1]-nin açıq şəkildə aktivləşdirilməsini tələb edir. Tərtibatçı cədvəl yaratdıqda, lakin RLS-ni aktivləşdirməyi unutduqda və ya məhdudlaşdırıcı siyasətləri müəyyən edə bilmədikdə, verilənlər bazası məlumatı layihənin anon [S1] açarına malik olan hər kəsə ifşa edə bilər. Next.js proqramlarında, server tərəfində göstərmə və müştəri tərəfinin gətirilməsi də diqqətli Supabase müştəri quraşdırmasını tələb edir ki, autentifikasiya edilmiş istifadəçi konteksti [S2] verilənlər bazası qatına çatsın.
Beton Təmirləri
- RLS-ni aktiv edin: [S1] tətbiq məlumatlarını saxlayan hər bir ictimai cədvəl üçün
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;-ni icra edin. - Siyasətləri müəyyənləşdirin:
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1] kimi istifadəçinin autentifikasiya statusuna əsasən girişi məhdudlaşdıran xüsusi siyasətlər yaradın. - Təhlükəsiz Server Tərəfli Müştərilər: Next.js istifadə edərkən, xidmət rolu müştərilərini yalnız serverdə saxlayın və məlumatları [S2] istifadəçilərinə qaytarmazdan əvvəl sahiblik filtrlərini tətbiq edin.
FixVibe bunu necə sınaqdan keçirir
FixVibe artıq baas.supabase-rls vasitəsilə yalnız oxumaq üçün Supabase RLS yoxlamasını həyata keçirir. Skaner eyni mənşəli JavaScript paketlərindən Supabase layihəsinin URL-sini və ictimai anon açarını aşkar edir, PostgREST-dən ictimai cədvəl metadatasını soruşur və məlumatların istifadəçi seansı olmadan ifşa edilib-edilmədiyini təsdiqləmək üçün məhdud oxunuş seçiminə cəhd edir. O, xidmət rolu etimadnaməsini daxil etmir, yeniləmir, silmir və ya istifadə etmir. Repo skanları bunu əvvəllər ENABLE ROW LEVEL SECURITY olmadan ictimai cədvəllər yaradan SQL miqrasiyalarını qeyd edən repo.supabase.missing-rls vasitəsilə də tuta bilər.
