Ta'sir
Agar Qator darajasi xavfsizligi (RLS) [S1] toʻgʻri qoʻllanilmasa, tajovuzkorlar maʼlumotlar bazasidagi yozuvlarni oʻqish, yangilash yoki oʻchirish uchun ilova mantigʻini chetlab oʻtishlari mumkin. Bu ko'pincha shaxsiy identifikatsiya qilinadigan ma'lumotlarning (PII) yoki maxfiy dastur ma'lumotlarining faqat ochiq anonim API kalitiga kirish huquqiga ega bo'lgan foydalanuvchilarga oshkor etilishiga olib keladi.
Asosiy sabab
Supabase ma'lumotlar bazasi darajasida ma'lumotlarga kirishni boshqarish uchun Postgres Row Level Security-dan foydalanadi, bu [S1] ma'lumotlarini himoya qilish uchun asosiy hisoblanadi. Next.js muhitida ishlab chiquvchilar [S2] server tomonida renderlash vaqtida xavfsizlikni ta'minlash uchun cookie-fayllar va seanslarni to'g'ri boshqaradigan Supabase mijozini yaratishi kerak. Zaifliklar odatda quyidagi hollarda yuzaga keladi:
- Jadvallar RLS yoqilmagan holda yaratilgan va ularga [S1] ochiq kaliti orqali kirish mumkin.
- Supabase mijozi Next.js da noto‘g‘ri sozlangan, [S2] ma’lumotlar bazasiga foydalanuvchi autentifikatsiya tokenlarini to‘g‘ri o‘tkaza olmadi.
- Ishlab chiquvchilar tasodifan mijoz kodida
service_rolekalitidan foydalanishadi, bu esa RLS barcha [S1] siyosatlarini chetlab o‘tadi.
Beton tuzatishlar
- RLSni yoqing: Supabase [S1] ma’lumotlar bazasidagi har bir jadval uchun Qator darajasi xavfsizligi yoqilganligiga ishonch hosil qiling.
- Siyosatlarni aniqlang: U identifikatori asosida foydalanuvchining kirishini cheklash uchun
SELECT,INSERT,UPDATEvaDELETEuchun maxsus Postgres siyosatlarini yarating. [S1]. - SSR mijozlaridan foydalaning:
@supabase/ssrpaketini Next.js da server tomonida autentifikatsiya va seans davomiyligini [S2] to‘g‘ri boshqaradigan mijozlar yaratish uchun amalga oshiring.
FixVibe buni qanday sinovdan o'tkazadi
FixVibe buni allaqachon o'rnatilgan ilovalar va repo tekshiruvlari orqali qamrab oladi. Passiv baas.supabase-rls moduli Supabase URL manzilini va bir xil kelib chiqqan JavaScript toʻplamlaridan anon-kalit juftlarini topadi, PostgREST-dan umumiy jadval meta-maʼlumotlarini soʻraydi va mijoz maʼlumotlarini mutatsiyaga oʻtkazmasdan anonim maʼlumotlar taʼsirini tasdiqlash uchun cheklangan faqat oʻqish uchun tanlovlarni amalga oshiradi. Repo skanerlari ENABLE ROW LEVEL SECURITYsiz umumiy jadvallarni yaratuvchi SQL migratsiyalarini belgilash uchun repo.supabase.missing-rls ni ham ishga tushiradi va maxfiy skanerlashlar brauzerga yetib borgunga qadar xizmat roli kalitlari taʼsirini qidiradi.
