प्रभाव
यदि पङ्क्ति स्तर सुरक्षा (RLS) [S1] लाई ठीकसँग लागू गरिएको छैन भने आक्रमणकारीहरूले डेटाबेसमा रेकर्डहरू पढ्न, अद्यावधिक गर्न वा मेटाउन अनुप्रयोग तर्कलाई बाइपास गर्न सक्छन्। यसले प्राय: सार्वजनिक अज्ञात API कुञ्जीमा मात्र पहुँच राख्ने प्रयोगकर्ताहरूलाई व्यक्तिगत रूपमा पहिचान योग्य जानकारी (PII) वा संवेदनशील अनुप्रयोग डेटाको खुलासामा परिणाम दिन्छ।
मूल कारण
Supabase ले डाटाबेस स्तरमा डाटा पहुँच व्यवस्थापन गर्न Postgres Row Level Security प्रयोग गर्दछ, जुन [S1] डाटा सुरक्षित गर्नको लागि आधारभूत छ। Next.js वातावरणमा, विकासकर्ताहरूले Supabase क्लाइन्ट सिर्जना गर्नुपर्छ जसले सर्भर-साइड रेन्डरिङ [S2] समयमा सुरक्षा कायम गर्न कुकीहरू र सत्रहरू सही रूपमा ह्यान्डल गर्छ। कमजोरीहरू सामान्यतया उत्पन्न हुन्छन् जब:
- तालिकाहरू RLS सक्षम नगरी सिर्जना गरिएका छन्, तिनीहरूलाई सार्वजनिक anon कुञ्जी [S1] मार्फत पहुँचयोग्य बनाउँदै।
- Supabase ग्राहक Next.js मा गलत कन्फिगर गरिएको छ, डाटाबेस [S2] मा प्रयोगकर्ता प्रमाणीकरण टोकनहरू ठीकसँग पास गर्न असफल भयो।
- विकासकर्ताहरूले गल्तीले ग्राहक-साइड कोडमा
service_roleकुञ्जी प्रयोग गर्छन्, जसले RLS नीतिहरू [S1] लाई बाइपास गर्दछ।
कंक्रीट फिक्सहरू
- RLS सक्षम गर्नुहोस्: तपाईंको Supabase डाटाबेस [S1] मा प्रत्येक तालिकाको लागि पङ्क्ति स्तर सुरक्षा सक्षम गरिएको सुनिश्चित गर्नुहोस्।
- नीतिहरू परिभाषित गर्नुहोस्: प्रयोगकर्ताको पहुँचलाई प्रतिबन्धित गर्न
SELECT,INSERT,UPDATE, रDELETEसञ्चालनहरूका लागि विशिष्ट Postgres नीतिहरू सिर्जना गर्नुहोस्। [S1]। - SSR ग्राहकहरू प्रयोग गर्नुहोस्: Next.js मा ग्राहकहरू सिर्जना गर्न
@supabase/ssrप्याकेज लागू गर्नुहोस् जसले सर्भर-साइड प्रमाणीकरण र सत्र स्थिरता [S2] लाई सही रूपमा व्यवस्थापन गर्दछ।
कसरी FixVibe यसको लागि परीक्षण गर्दछ
FixVibe ले यसलाई डिप्लोइड-एप र रिपो जाँचहरू मार्फत समेट्छ। निष्क्रिय baas.supabase-rls मोड्युलले समान-मूल JavaScript बन्डलहरूबाट Supabase URL र अनन-कुञ्जी जोडीहरू पत्ता लगाउँदछ, सार्वजनिक तालिका मेटाडेटाको लागि PostgREST सोध्छ, र अज्ञात डेटा म्युटर डेटा एक्सपोजर बिना ग्राहकको डेटा प्रदर्शन पुष्टि गर्न सीमित पढ्न-मात्र चयनहरू प्रदर्शन गर्दछ। रिपो स्क्यानहरूले ENABLE ROW LEVEL SECURITY बिना सार्वजनिक तालिकाहरू सिर्जना गर्ने SQL माइग्रेसनहरूलाई फ्ल्याग गर्न repo.supabase.missing-rls पनि चलाउँछन्, र ब्राउजरमा पुग्नु अघि गोप्य स्क्यानहरूले सेवा-भूमिका कुञ्जी एक्सपोजर खोज्छन्।
