FixVibe
Covered by FixVibehigh

Next.js + Supabase सुरक्षित करणे: रो लेव्हल सिक्युरिटी (RLS) बायपास प्रतिबंधित करणे

Next.js आणि Supabase सह बनवलेले ॲप्लिकेशन डेटा संरक्षित करण्यासाठी अनेकदा रो लेव्हल सिक्युरिटी (RLS) वर अवलंबून असतात. RLS सक्षम करण्यात अयशस्वी होणे किंवा Supabase क्लायंट चुकीचे कॉन्फिगर केल्याने संपूर्ण डेटाबेस एक्सपोजर होऊ शकतो, अनधिकृत वापरकर्त्यांना संवेदनशील रेकॉर्ड वाचण्याची किंवा सुधारित करण्याची परवानगी देते.

CWE-284

प्रभाव

जर रो लेव्हल सिक्युरिटी (RLS) [S1] ची योग्यरित्या अंमलबजावणी केली नसेल तर हल्लेखोर डेटाबेसमधील रेकॉर्ड वाचण्यासाठी, अपडेट करण्यासाठी किंवा हटवण्यासाठी ॲप्लिकेशन लॉजिकला बायपास करू शकतात. याचा परिणाम केवळ सार्वजनिक निनावी API की मध्ये प्रवेश असलेल्या वापरकर्त्यांना वैयक्तिकरित्या ओळखण्यायोग्य माहिती (PII) किंवा संवेदनशील अनुप्रयोग डेटाच्या प्रदर्शनात होतो.

मूळ कारण

Supabase डेटाबेस स्तरावर डेटा प्रवेश व्यवस्थापित करण्यासाठी पोस्टग्रेस रो लेव्हल सिक्युरिटी वापरते, जे [S1] डेटा सुरक्षित करण्यासाठी मूलभूत आहे. Next.js वातावरणात, विकासकांनी Supabase क्लायंट तयार करणे आवश्यक आहे जे सर्व्हर-साइड रेंडरिंग [S2] दरम्यान सुरक्षा राखण्यासाठी कुकीज आणि सत्रे योग्यरित्या हाताळते. असुरक्षा सहसा उद्भवतात जेव्हा:

  • टेबल्स RLS सक्षम केल्याशिवाय तयार केल्या जातात, त्यांना सार्वजनिक anon की [S1] द्वारे प्रवेशयोग्य बनवतात.
  • Supabase क्लायंट Next.js मध्ये चुकीचे कॉन्फिगर केले आहे, [S2] डेटाबेसमध्ये वापरकर्ता प्रमाणीकरण टोकन योग्यरित्या पास करण्यात अयशस्वी झाले आहे.
  • डेव्हलपर चुकून service_role की क्लायंट-साइड कोडमध्ये वापरतात, जी RLS पॉलिसी [S1] ला बायपास करते.

ठोस निराकरणे

  • RLS सक्षम करा: तुमच्या Supabase डेटाबेस [S1] मधील प्रत्येक टेबलसाठी पंक्ती पातळी सुरक्षा सक्षम असल्याची खात्री करा.
  • धोरणे परिभाषित करा: वापरकर्त्याच्या प्रवेशास प्रतिबंध करण्यासाठी SELECT, INSERT, UPDATE आणि DELETE ऑपरेशन्ससाठी विशिष्ट पोस्टग्रेस धोरणे तयार करा. [S1].
  • एसएसआर क्लायंट वापरा: Next.js मध्ये क्लायंट तयार करण्यासाठी @supabase/ssr पॅकेज लागू करा जे सर्व्हर-साइड प्रमाणीकरण आणि सत्र टिकाव [S2] योग्यरित्या व्यवस्थापित करतात.

त्यासाठी FixVibe चाचण्या कशा करतात

FixVibe हे आधीच उपयोजित ॲप आणि रेपो चेकद्वारे कव्हर करते. निष्क्रिय baas.supabase-rls मॉड्यूल Supabase URL आणि समान-मूळ JavaScript बंडलमधून अनॉन-की जोड्या शोधते, सार्वजनिक टेबल मेटाडेटा साठी PostgREST विचारते आणि निनावी डेटा एक्सपोजर ग्राहक डेटा एक्सपोजर शिवाय पुष्टी करण्यासाठी मर्यादित वाचनीय निवड करते. रेपो स्कॅन ENABLE ROW LEVEL SECURITY शिवाय सार्वजनिक सारण्या तयार करणाऱ्या SQL स्थलांतरांना ध्वजांकित करण्यासाठी repo.supabase.missing-rls देखील चालवतात आणि ब्राउझरवर पोहोचण्यापूर्वी गुप्त स्कॅन सर्व्हिस-रोल की एक्सपोजर शोधतात.