प्रभाव
यदि रो लेवल सिक्योरिटी (RLS) को ठीक से लागू नहीं किया गया है तो हमलावर डेटाबेस में रिकॉर्ड को पढ़ने, अपडेट करने या हटाने के लिए एप्लिकेशन लॉजिक को बायपास कर सकते हैं। इसके परिणामस्वरूप अक्सर व्यक्तिगत रूप से पहचान योग्य जानकारी (पीआईआई) या संवेदनशील एप्लिकेशन डेटा उन उपयोगकर्ताओं के सामने आ जाता है जिनके पास केवल सार्वजनिक अनाम API कुंजी तक पहुंच होती है।
मूल कारण
Supabase डेटाबेस स्तर पर डेटा एक्सेस को प्रबंधित करने के लिए पोस्टग्रेस रो लेवल सिक्योरिटी का उपयोग करता है, जो डेटा [S1] को सुरक्षित करने के लिए मौलिक है। Next.js वातावरण में, डेवलपर्स को एक Supabase क्लाइंट बनाना होगा जो सर्वर-साइड रेंडरिंग [S2] के दौरान सुरक्षा बनाए रखने के लिए कुकीज़ और सत्रों को सही ढंग से संभालता है। कमज़ोरियाँ आम तौर पर तब उत्पन्न होती हैं जब:
- तालिकाएँ RLS सक्षम किए बिना बनाई जाती हैं, जिससे उन्हें सार्वजनिक anon कुंजी [S1] के माध्यम से पहुंच योग्य बनाया जा सकता है।
- Supabase क्लाइंट को Next.js में गलत तरीके से कॉन्फ़िगर किया गया है, जो डेटाबेस [S2] में उपयोगकर्ता प्रमाणीकरण टोकन को ठीक से पास करने में विफल रहा है।
- डेवलपर्स क्लाइंट-साइड कोड में गलती से
service_roleकुंजी का उपयोग करते हैं, जो सभी RLS नीतियों [S1] को बायपास करता है।
ठोस सुधार
- RLS सक्षम करें: सुनिश्चित करें कि आपके ZXCVFIXVIBTOKEN1ZXCV डेटाबेस ZXCVFIXVIBTOKEN0ZXCV में प्रत्येक तालिका के लिए पंक्ति स्तर सुरक्षा सक्षम है।
- नीतियां परिभाषित करें: उपयोगकर्ता के UID ZXCVFIXVIBTOKEN4ZXCV के आधार पर पहुंच को प्रतिबंधित करने के लिए
SELECT,INSERT,UPDATE, औरDELETEसंचालन के लिए विशिष्ट पोस्टग्रेज नीतियां बनाएं। - SSR क्लाइंट का उपयोग करें: ZXCVFIXVIBTOKEN2ZXCV में क्लाइंट बनाने के लिए ZXCVFIXVIBTOKEN0ZXCV पैकेज को लागू करें जो सर्वर-साइड प्रमाणीकरण और सत्र दृढ़ता ZXCVFIXVIBTOKEN1ZXCV को सही ढंग से प्रबंधित करता है।
FixVibe इसका परीक्षण कैसे करता है
FixVibe पहले से ही तैनात-ऐप और रेपो जांच के माध्यम से इसे कवर करता है। निष्क्रिय baas.supabase-rls मॉड्यूल समान-मूल जावास्क्रिप्ट बंडलों से Supabase URL और एनॉन-कुंजी जोड़े की खोज करता है, सार्वजनिक तालिका मेटाडेटा के लिए PostgREST पूछता है, और ग्राहक डेटा को परिवर्तित किए बिना अनाम डेटा एक्सपोज़र की पुष्टि करने के लिए सीमित रीड-ओनली चयन करता है। रेपो स्कैन SQL माइग्रेशन को फ़्लैग करने के लिए repo.supabase.missing-rls भी चलाता है जो ENABLE ROW LEVEL SECURITY के बिना सार्वजनिक तालिकाएँ बनाता है, और गुप्त स्कैन ब्राउज़र तक पहुँचने से पहले सेवा-भूमिका कुंजी एक्सपोज़र की तलाश करता है।
