Content-Security-Policy חסרה באפליקציית Cursor
Cursor הוא עורך קוד עם AI - הסטאק כולו בבעלותך, והפריסה הנפוצה היא Vercel או Netlify.
מה הבעיה
Content-Security-Policy (CSP) היא הכותרת שאומרת לדפדפן מאילו מקורות מותר לטעון סקריפטים, סגנונות ותמונות, ולאן מותר לדף לשלוח נתונים. בלעדיה הדפדפן מריץ כל סקריפט שמגיע לדף - וזו הבדיקה שנכשלת הכי הרבה בסריקות שלנו.
למה זה מסוכן
CSP היא רשת הביטחון נגד XSS: גם כשתוקף מצליח להזריק סקריפט לדף - דרך פרמטר בכתובת, תוכן שמשתמשים מזינים או ספרייה חיצונית שנפרצה - מדיניות טובה חוסמת את ההרצה או את שליחת הנתונים החוצה. בלי CSP הסקריפט המוזרק רץ חופשי: גונב טוקנים, קורא טפסים ופועל בשם המשתמש.
איפה זה מתוקן ב-Cursor
לפי המארח: vercel.json ב-Vercel, netlify.toml ב-Netlify, או headers() ב-next.config.js.
שלבי התיקון
- הגדר CSP ככותרת HTTP בשכבת ההגשה - תג meta הוא תחליף חלקי בלבד, ובלעדיו ההגנה לא חלה על כל התגובות
- התחל מבסיס צר:
default-src 'self', והוסף במפורש רק את המקורות שהאתר באמת טוען מהם (פונטים, אנליטיקס, תשלומים) - לפני אכיפה, הרץ שבוע במצב
Content-Security-Policy-Report-Only- רואים בקונסול מה היה נחסם בלי לשבור כלום - הימנע מ-
'unsafe-inline'ב-script-src - הוא מבטל את עיקר ההגנה; העבר סקריפטים inline לקבצים או השתמש ב-nonce
ההנחיה להדביק ב-Cursor
העתק את ההנחיה הבאה לכלי שבנה את האפליקציה (באנגלית - כך הכלים עובדים הכי טוב):
Add a Content-Security-Policy HTTP response header (not a meta tag) at the hosting layer. Start from default-src 'self', explicitly allow only the external origins the app actually loads from, avoid 'unsafe-inline' in script-src (use nonces or move inline scripts into files), and roll it out with Content-Security-Policy-Report-Only first to catch breakage.
איך מוודאים שהתיקון עבד
הרץ curl -sSI https://your-domain.com וודא ש-Content-Security-Policy מופיעה, פתח את האתר וודא שאין שגיאות CSP בקונסול, ואז הרץ סריקה חוזרת.
עוד בנושא
בדיקה חינם
רוצה לדעת אם האפליקציה שלך חשופה? סרוק בחינם ב-30 שניות וקבל ציון אבטחה + הוראות תיקון.