RLS כבוי ב-Supabase באפליקציית Lovable
Lovable בונה אפליקציות React עם Supabase כבקאנד ברירת המחדל, ומפרסם אותן תחת lovable.app או דומיין מותאם.
מה הבעיה
Row Level Security הוא מנגנון ההרשאות של Supabase. כשהוא כבוי על טבלה, כל מי שמחזיק את המפתח הציבורי (anon) - כלומר כל מבקר באתר - יכול לקרוא אותה ישירות.
למה זה מסוכן
המפתח הציבורי מוטמע בקוד שהדפדפן מוריד. בלי RLS זה שקול למסד נתונים פתוח לאינטרנט: רשימות משתמשים, הזמנות ופרטים אישיים נקראים בשאילתה אחת.
איפה זה מתוקן ב-Lovable
סודות שייכים ל-Supabase Edge Function Secrets (או ל-Secrets של Lovable), לעולם לא לקוד שהדפדפן מוריד.
שלבי התיקון
- הפעל RLS על כל טבלה:
ALTER TABLE <table> ENABLE ROW LEVEL SECURITY; - הוסף policy שמגבילה קריאה לשורות של המשתמש:
USING (auth.uid() = user_id) - טבלאות שאין להן סיבה להיקרא מהדפדפן - השאר בלי policy, וגש אליהן רק מצד השרת
ההנחיה להדביק ב-Lovable
העתק את ההנחיה הבאה לכלי שבנה את האפליקציה (באנגלית - כך הכלים עובדים הכי טוב):
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 שניות וקבל ציון אבטחה + הוראות תיקון.