اثر
قطار ليول سيڪيورٽي (RLS) کي لاڳو ڪرڻ ۾ ناڪامي غير تصديق ٿيل حملي ڪندڙن کي Supabase ڊيٽابيس مان ڊيٽا پڇڻ جي اجازت ڏئي ٿي جڏهن عوامي جدولن کي انون بائونڊري [S1] ذريعي بي نقاب ڪيو وڃي ٿو. ڇاڪاڻ ته Next.js ايپليڪيشنون عام طور تي Supabase anon کي ڪلائنٽ-سائيڊ ڪوڊ ۾ ظاهر ڪن ٿيون، هڪ حملو ڪندڙ هن ڪيچ کي استعمال ڪري سگهي ٿو سڌو REST API ايپليڪيشن کي ڪال ڪندي، ڊيٽا تائين رسائي حاصل ڪندي. حساس صارف جي معلومات [S2].
بنيادي سبب
ڊفالٽ طور، Supabase ۾ پوسٽ گريس جدولن کي عوام جي رسائي کي روڪڻ لاءِ قطار ليول سيڪيورٽي جي واضح چالو ڪرڻ جي ضرورت آهي [S1]. جڏهن هڪ ڊولپر هڪ ٽيبل ٺاهي ٿو پر RLS کي فعال ڪرڻ وساري ٿو يا پابنديون پاليسين جي وضاحت ڪرڻ ۾ ناڪام ٿئي ٿو، ڊيٽابيس شايد ڊيٽا کي ظاهر ڪري سگهي ٿو ڪنهن کي پروجيڪٽ جي anon ڪيئي [S1] وٽ. Next.js ايپليڪيشنن ۾، سرور-سائڊ رينڊرنگ ۽ ڪلائنٽ-سائڊ آڻڻ لاءِ پڻ محتاط Supabase ڪلائنٽ سيٽ اپ جي ضرورت آهي، تنهن ڪري تصديق ٿيل صارف جو حوالو ڊيٽابيس جي پرت تائين پهچي ٿو [S2].
ڪنڪريٽ فيڪس
- RLS کي فعال ڪريو:
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;هر پبلڪ ٽيبل لاءِ جيڪو ايپ ڊيٽا محفوظ ڪري ٿو [S1]. - پاليسيون بيان ڪريو: مخصوص پاليسيون ٺاهيون جيڪي صارف جي تصديق جي حيثيت جي بنياد تي رسائي کي محدود ڪن، جهڙوڪ
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - محفوظ سرور-سائيڊ ڪلائنٽ: جڏهن Next.js استعمال ڪريو، خدمت-رول ڪلائنٽ سرور-صرف رکو ۽ اڃا به صارفين کي ڊيٽا واپس ڪرڻ کان پهريان ملڪيت جا فلٽر لاڳو ڪريو [S2].
ڪيئن FixVibe ان لاءِ ٽيسٽ ڪري ٿو
FixVibe اڳ ۾ ئي Supabase RLS baas.supabase-rls ذريعي صرف پڙهڻ لاءِ هلائي ٿو. اسڪينر دريافت ڪري ٿو Supabase پروجيڪٽ URL ۽ ساڳئي اصل جاوا اسڪرپٽ بنڊلز مان عوامي anon ڪيئي، PostgREST کان پبلڪ ٽيبل ميٽا ڊيٽا لاءِ پڇي ٿو، ۽ ڪوشش ڪري ٿو محدود پڙهڻ لاءِ چونڊون تصديق ڪرڻ لاءِ ته آيا ڊيٽا صارف سيشن کان سواءِ بي نقاب ڪئي وئي آهي. اهو داخل نٿو ڪري، تازه ڪاري ڪري ٿو، ختم ڪري ٿو، يا خدمت جي ڪردار جي سندن کي استعمال ڪري ٿو. ريپو اسڪين پڻ پڪڙي سگھي ٿو ھن کي اڳ ۾ repo.supabase.missing-rls ذريعي، جيڪو جھنڊو ڏئي ٿو SQL لڏپلاڻ جيڪي ENABLE ROW LEVEL SECURITY کان سواءِ عوامي ٽيبل ٺاھين ٿا.
