כתיבה פתוחה למסד הנתונים באפליקציית v0
v0 של Vercel מייצר קומפוננטות ואפליקציות Next.js שנפרסות ל-Vercel.
מה הבעיה
גם כש-RLS דולק, policy רחבה מדי (או policy של INSERT/UPDATE בלי בדיקת בעלות) מאפשרת לכל מבקר לכתוב למסד הנתונים עם המפתח הציבורי.
למה זה מסוכן
תוקף יכול לזייף רשומות, לדרוס נתונים של משתמשים אחרים או למלא את המסד בזבל עד שהאפליקציה קורסת - הכל בלי להתחבר.
איפה זה מתוקן ב-v0
משתני סביבה מוגדרים ב-Vercel (Project Settings > Environment Variables). כל משתנה עם קידומת NEXT_PUBLIC_ נשלח לדפדפן - סודות בלי הקידומת הזו בלבד.
שלבי התיקון
- עבור על כל policy של INSERT/UPDATE/DELETE וודא שיש בה
WITH CHECK (auth.uid() = user_id) - מחק policies שנוצרו "כדי שזה יעבוד" עם
USING (true) - פעולות כתיבה רגישות - העבר ל-Edge Function שרץ עם הרשאות שרת ובודק קלט
ההנחיה להדביק ב-v0
העתק את ההנחיה הבאה לכלי שבנה את האפליקציה (באנגלית - כך הכלים עובדים הכי טוב):
Audit every Supabase RLS policy for INSERT/UPDATE/DELETE: remove USING(true) policies and add WITH CHECK (auth.uid() = user_id) so anonymous visitors cannot write.
איך מוודאים שהתיקון עבד
סריקה חוזרת מנסה כתיבת בדיקה לא-הרסנית ומדווחת אם היא עדיין מתקבלת.
עוד בנושא
בדיקה חינם
רוצה לדעת אם האפליקציה שלך חשופה? סרוק בחינם ב-30 שניות וקבל ציון אבטחה + הוראות תיקון.