Ta'sir
Qator darajasi xavfsizligini (RLS) amalga oshirmaslik, autentifikatsiya qilinmagan buzg'unchilarga Supabase ma'lumotlar bazasidan umumiy jadvallar [S1] anon chegarasi orqali ochilganda ma'lumotlarni so'rash imkonini beradi. Next.js ilovalari odatda mijoz kodida Supabase anon kalitini ochganligi sababli, tajovuzkor ushbu kalitdan bevosita REST API qo'ng'iroqlarini amalga oshirish va ma'lumotlar bazasiga kirish va foydalanuvchi ma'lumotlariga kirish uchun foydalanishi mumkin. [S2].
Asosiy sabab
Odatiy bo'lib, Supabase-dagi Postgres jadvallari [S1] ommaviy kirishining oldini olish uchun Row Level Security-ning aniq faollashtirilishini talab qiladi. Agar dasturchi jadval yaratsa, lekin RLS ni yoqishni unutib qo‘ysa yoki cheklovchi siyosatlarni aniqlay olmasa, ma’lumotlar bazasi loyihaning anon [S1] kalitiga ega bo‘lgan har bir kishiga ma’lumotlarni oshkor qilishi mumkin. Next.js ilovalarida server tomonida renderlash va mijoz tomonidan olish ham Supabase mijozni ehtiyotkorlik bilan sozlashni talab qiladi, shuning uchun autentifikatsiya qilingan foydalanuvchi konteksti [S2] maʼlumotlar bazasi qatlamiga yetib boradi.
Beton tuzatishlar
- RLS ni yoqing: [S1] ilova maʼlumotlarini saqlaydigan har bir ochiq jadval uchun
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;ni bajaring. - Siyosatlarni aniqlang:
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1] kabi foydalanuvchining autentifikatsiya holati asosida kirishni cheklovchi maxsus siyosatlarni yarating. - Server tomonidagi mijozlarni himoya qilish: Next.js dan foydalanayotganda, [S2] foydalanuvchilariga maʼlumotlarni qaytarishdan oldin faqat xizmat koʻrsatuvchi mijozlarni serverda saqlang va egalik filtrlarini qoʻllang.
FixVibe buni qanday sinovdan o'tkazadi
FixVibe allaqachon baas.supabase-rls orqali faqat o‘qish uchun Supabase RLS tekshiruvini ishga tushiradi. Skaner Supabase loyihasi URL manzilini va bir xil kelib chiqqan JavaScript toʻplamlaridan ochiq anon kalitini topadi, PostgREST-dan umumiy jadval meta-maʼlumotlarini soʻraydi va maʼlumotlarning foydalanuvchi seansisiz koʻrsatilishini tasdiqlash uchun faqat oʻqish uchun cheklangan tanlashga harakat qiladi. U xizmat roli hisob ma'lumotlarini kiritmaydi, yangilamaydi, o'chirmaydi yoki ishlatmaydi. Repo skanerlari buni ENABLE ROW LEVEL SECURITYsiz umumiy jadvallar yaratuvchi SQL migratsiyasini belgilovchi repo.supabase.missing-rls orqali ham oldinroq aniqlashi mumkin.
