प्रभाव
रो लेव्हल सिक्युरिटी (RLS) अंमलात आणण्यात अयशस्वी झाल्यामुळे अनधिकृत आक्रमणकर्त्यांना Supabase डेटाबेसमधून डेटा क्वेरी करण्याची अनुमती मिळते जेव्हा सार्वजनिक टेबल्स अनॉन सीमा [S1] द्वारे उघड होतात. Next.js ॲप्लिकेशन्स सामान्यत: Supabase anon की क्लायंट-साइड कोडमध्ये उघड करत असल्यामुळे, आक्रमणकर्ता ही की वापरून थेट REST API ऍप्लिकेशनला कॉल करून डेटा ऍक्सेस करून, कॉल करू शकतो. संवेदनशील वापरकर्ता माहिती [S2].
मूळ कारण
डीफॉल्टनुसार, Supabase मधील Postgres टेबल्सना सार्वजनिक प्रवेश [S1] प्रतिबंधित करण्यासाठी रो लेव्हल सिक्युरिटीचे स्पष्ट सक्रियकरण आवश्यक आहे. जेव्हा डेव्हलपर टेबल तयार करतो परंतु RLS सक्षम करण्यास विसरतो किंवा प्रतिबंधात्मक धोरणे परिभाषित करण्यात अयशस्वी होतो, तेव्हा डेटाबेस प्रकल्पाची anon की [S1] असलेल्या कोणालाही डेटा उघड करू शकतो. Next.js ऍप्लिकेशन्समध्ये, सर्व्हर-साइड रेंडरिंग आणि क्लायंट-साइड फेचिंगसाठी देखील काळजीपूर्वक Supabase क्लायंट सेटअप आवश्यक आहे जेणेकरून प्रमाणीकृत वापरकर्ता संदर्भ डेटाबेस स्तर [S2] पर्यंत पोहोचेल.
ठोस निराकरणे
- RLS सक्षम करा: [S1] ॲप डेटा संचयित करणाऱ्या प्रत्येक सार्वजनिक टेबलसाठी
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;कार्यान्वित करा. - नीती परिभाषित करा: विशिष्ट धोरणे तयार करा जी वापरकर्त्याच्या प्रमाणीकरण स्थितीवर आधारित प्रवेश प्रतिबंधित करतात, जसे की
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - सुरक्षित सर्व्हर-साइड क्लायंट: Next.js वापरताना, सेवा-भूमिका क्लायंट सर्व्हर-केवळ ठेवा आणि तरीही [S2] वापरकर्त्यांना डेटा परत करण्यापूर्वी मालकी फिल्टर लागू करा.
त्यासाठी FixVibe चाचण्या कशा करतात
FixVibe आधीपासूनच baas.supabase-rls द्वारे केवळ-वाचनीय Supabase RLS चेक चालवते. स्कॅनरला समान मूळ JavaScript बंडलमधून Supabase प्रकल्प URL आणि सार्वजनिक अनॉन की सापडते, सार्वजनिक टेबल मेटाडेटा पोस्टग्रेस्टला विचारतो आणि वापरकर्ता सत्राशिवाय डेटा उघड झाला आहे की नाही याची पुष्टी करण्यासाठी मर्यादित-वाचनीय निवडीचा प्रयत्न करतो. ते सेवा-भूमिका क्रेडेन्शियल्स घालत नाही, अपडेट करत नाही, हटवत नाही किंवा वापरत नाही. रेपो स्कॅन repo.supabase.missing-rls द्वारे देखील हे आधी पकडू शकतात, जे ENABLE ROW LEVEL SECURITY शिवाय सार्वजनिक टेबल तयार करणाऱ्या SQL स्थलांतरांना ध्वजांकित करते.
