RLS כבוי ב-Supabase באפליקציית Bolt
Bolt מייצר פרויקטים מלאים (לרוב React/Next עם Supabase) ופריסה נפוצה היא Netlify.
מה הבעיה
Row Level Security הוא מנגנון ההרשאות של Supabase. כשהוא כבוי על טבלה, כל מי שמחזיק את המפתח הציבורי (anon) - כלומר כל מבקר באתר - יכול לקרוא אותה ישירות.
למה זה מסוכן
המפתח הציבורי מוטמע בקוד שהדפדפן מוריד. בלי RLS זה שקול למסד נתונים פתוח לאינטרנט: רשימות משתמשים, הזמנות ופרטים אישיים נקראים בשאילתה אחת.
איפה זה מתוקן ב-Bolt
משתני סביבה מגדירים ב-Netlify (Site settings > Environment variables) וקוראים אותם רק בצד השרת - קידומת VITE_/NEXT_PUBLIC_ הופכת ערך לציבורי.
שלבי התיקון
- הפעל RLS על כל טבלה:
ALTER TABLE <table> ENABLE ROW LEVEL SECURITY; - הוסף policy שמגבילה קריאה לשורות של המשתמש:
USING (auth.uid() = user_id) - טבלאות שאין להן סיבה להיקרא מהדפדפן - השאר בלי policy, וגש אליהן רק מצד השרת
ההנחיה להדביק ב-Bolt
העתק את ההנחיה הבאה לכלי שבנה את האפליקציה (באנגלית - כך הכלים עובדים הכי טוב):
Enable Row Level Security on every Supabase table and add owner-scoped policies (auth.uid() = user_id). List every table that currently has RLS disabled and fix each one.
איך מוודאים שהתיקון עבד
הרץ סריקה חוזרת - הבדיקה מנסה לקרוא את הטבלאות עם המפתח הציבורי בלבד ומדווחת מה עדיין פתוח.
עוד בנושא
בדיקה חינם
רוצה לדעת אם האפליקציה שלך חשופה? סרוק בחינם ב-30 שניות וקבל ציון אבטחה + הוראות תיקון.