FixVibe
Covered by FixVibehigh

Next.js + Supabase کو محفوظ کرنا: قطار کی سطح کی حفاظت کو روکنا (RLS) بائی پاسز

Next.js اور Supabase کے ساتھ بنی ایپلیکیشنز اکثر ڈیٹا کی حفاظت کے لیے قطار کی سطح کی سیکیورٹی (RLS) پر انحصار کرتی ہیں۔ RLS کو فعال کرنے میں ناکامی یا Supabase کلائنٹ کی غلط کنفیگریشن مکمل ڈیٹا بیس کی نمائش کا باعث بن سکتی ہے، غیر مجاز صارفین کو حساس ریکارڈز کو پڑھنے یا اس میں ترمیم کرنے کی اجازت دیتا ہے۔

CWE-284

اثر

اگر رو لیول سیکیورٹی (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 کے بغیر پبلک ٹیبلز بناتے ہیں، اور خفیہ اسکینز براؤزر تک پہنچنے سے پہلے سروس رول کلیدی نمائش کو تلاش کرتے ہیں۔