כתיבה פתוחה למסד הנתונים באפליקציית Replit
Replit Agent בונה ומארח אפליקציות תחת replit.app, לרוב עם שרת Node/Express או Python.
מה הבעיה
גם כש-RLS דולק, policy רחבה מדי (או policy של INSERT/UPDATE בלי בדיקת בעלות) מאפשרת לכל מבקר לכתוב למסד הנתונים עם המפתח הציבורי.
למה זה מסוכן
תוקף יכול לזייף רשומות, לדרוס נתונים של משתמשים אחרים או למלא את המסד בזבל עד שהאפליקציה קורסת - הכל בלי להתחבר.
איפה זה מתוקן ב-Replit
סודות מנהלים בלשונית Secrets של Replit - לא בקבצים בפרויקט, שיכולים להיות ציבוריים ב-Repl משותף.
שלבי התיקון
- עבור על כל policy של INSERT/UPDATE/DELETE וודא שיש בה
WITH CHECK (auth.uid() = user_id) - מחק policies שנוצרו "כדי שזה יעבוד" עם
USING (true) - פעולות כתיבה רגישות - העבר ל-Edge Function שרץ עם הרשאות שרת ובודק קלט
ההנחיה להדביק ב-Replit
העתק את ההנחיה הבאה לכלי שבנה את האפליקציה (באנגלית - כך הכלים עובדים הכי טוב):
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 שניות וקבל ציון אבטחה + הוראות תיקון.