اثر
اگر رو لیول سیکیورٹی (RLS) [S1] کو صحیح طریقے سے نافذ نہیں کیا گیا ہے تو حملہ آور ڈیٹا بیس میں ریکارڈ کو پڑھنے، اپ ڈیٹ کرنے یا حذف کرنے کے لیے ایپلیکیشن منطق کو نظرانداز کر سکتے ہیں۔ اس کے نتیجے میں اکثر ایسے صارفین کو ذاتی طور پر قابل شناخت معلومات (PII) یا ایپلیکیشن کے حساس ڈیٹا کی نمائش ہوتی ہے جن کے پاس صرف عوامی گمنام API کلید تک رسائی ہوتی ہے۔
بنیادی وجہ
Supabase ڈیٹا بیس کی سطح پر ڈیٹا تک رسائی کا انتظام کرنے کے لیے Postgres Row Level Security کا استعمال کرتا ہے، جو [S1] ڈیٹا کو محفوظ کرنے کے لیے بنیادی ہے۔ Next.js ماحول میں، ڈویلپرز کو ایک Supabase کلائنٹ بنانا چاہیے جو سرور سائیڈ رینڈرنگ [S2] کے دوران سیکیورٹی کو برقرار رکھنے کے لیے کوکیز اور سیشنز کو درست طریقے سے ہینڈل کرے۔ کمزوریاں عام طور پر اس وقت پیدا ہوتی ہیں جب:
- میزیں RLS کو فعال کیے بغیر بنائی گئی ہیں، جو انہیں عوامی اینون کلید [S1] کے ذریعے قابل رسائی بناتی ہیں۔
- Supabase کلائنٹ کو Next.js میں غلط کنفیگر کیا گیا ہے، جو ڈیٹا بیس [S2] کو صارف کے تصدیقی ٹوکنز کو صحیح طریقے سے منتقل کرنے میں ناکام ہے۔
- ڈویلپرز غلطی سے کلائنٹ سائڈ کوڈ میں
service_roleکلید استعمال کرتے ہیں، جو تمام RLS پالیسیوں [S1] کو نظرانداز کرتی ہے۔
ٹھوس اصلاحات
- RLS کو فعال کریں: یقینی بنائیں کہ آپ کے Supabase ڈیٹا بیس [S1] میں ہر ٹیبل کے لیے قطار کی سطح کی سیکیورٹی فعال ہے۔
- پالیسیوں کی وضاحت کریں:
SELECT،INSERT،UPDATE، اورDELETEکے لیے مخصوص پوسٹگریس پالیسیاں بنائیں تاکہ صارف کی UID تک رسائی کو محدود کرنے کی بنیاد پر کارروائیاں کریں۔ [S1]۔ - SSR کلائنٹس کا استعمال کریں:
@supabase/ssrپیکج کو Next.js میں کلائنٹس بنانے کے لیے لاگو کریں جو سرور کی طرف سے تصدیق اور سیشن پرسیسٹینس [S2] کا صحیح طریقے سے انتظام کریں۔
FixVibe اس کے لیے کیسے ٹیسٹ کرتا ہے۔
FixVibe پہلے سے ہی تعینات ایپ اور ریپو چیک کے ذریعے اس کا احاطہ کرتا ہے۔ غیر فعال baas.supabase-rls ماڈیول Supabase URL اور ایک ہی اصل کے JavaScript بنڈلز سے anon-key جوڑوں کو دریافت کرتا ہے، PostgREST سے پبلک ٹیبل میٹا ڈیٹا کے لیے پوچھتا ہے، اور گمنام ڈیٹا کی نمائش کی تصدیق کرنے کے لیے محدود صرف پڑھنے کے انتخاب کو انجام دیتا ہے۔ ریپو اسکینز repo.supabase.missing-rls کو بھی چلاتے ہیں تاکہ وہ ایس کیو ایل مائیگریشنز کو جھنڈا دے سکیں جو ENABLE ROW LEVEL SECURITY کے بغیر پبلک ٹیبلز بناتے ہیں، اور خفیہ اسکینز براؤزر تک پہنچنے سے پہلے سروس رول کلیدی نمائش کو تلاش کرتے ہیں۔
