מחולל כותרות אבטחה ו-CSP

בוחרים איפה האתר מאוחסן ואילו שירותים הוא טוען, ומקבלים קובץ מוכן עם CSP, HSTS ושאר כותרות ההגנה. מתחיל במצב שרק מדווח, כדי שלא יישבר כלום.

קובץ מוכן להעתקהמתחיל ב-Report-Onlyבלי הרשמה
כותרות אבטחהחינם
איפה האתר מאוחסן
אילו שירותים האתר טוען

בלי כתובת, הקובץ יכיל YOUR-PROJECT-REF במקום המזהה. החליפו אותו לפני הפריסה.

אפשרויות
vercel.json
{
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "Content-Security-Policy-Report-Only",
          "value": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://YOUR-PROJECT-REF.supabase.co; font-src 'self' data:; connect-src 'self' https://YOUR-PROJECT-REF.supabase.co wss://YOUR-PROJECT-REF.supabase.co; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=63072000; includeSubDomains"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-Frame-Options",
          "value": "DENY"
        },
        {
          "key": "Referrer-Policy",
          "value": "strict-origin-when-cross-origin"
        },
        {
          "key": "Permissions-Policy",
          "value": "camera=(), microphone=(), geolocation=()"
        },
        {
          "key": "Cross-Origin-Opener-Policy",
          "value": "same-origin-allow-popups"
        }
      ]
    }
  ]
}

אם כבר יש לכם vercel.json, הוסיפו את המערך headers לקובץ הקיים.

אחרי הפריסה: בדיקת אבטחה לאתר מראה אם הכותרות באמת מגיעות לדפדפן.

שאלות נפוצות

למה הכותרת מתחילה כ-Report-Only?

כי CSP שנאכף מהיום הראשון שובר אפליקציות: סקריפט אחד שלא ברשימה, והכפתור לא עובד. ב-Report-Only הדפדפן רק מדווח בקונסול על מה שהיה נחסם. כשהקונסול נקי כמה ימים, מחליפים לכותרת שנאכפת.

איך יודעים שזה עבד?

פותחים את האתר עם כלי המפתחים, בלשונית Console, ומחפשים הודעות של Content Security Policy. אחרי הפריסה אפשר להריץ שוב את בדיקת האבטחה לאתר ולראות שהכותרות נמצאות.

מה זה preload ב-HSTS ולמה הוא כבוי?

preload מכניס את הדומיין לרשימה שמובנית בדפדפנים, שמחייבת HTTPS בכל תת-דומיין. לפי האתר שמנהל את הרשימה, קשה לצאת ממנה, ושינוי לוקח חודשים להגיע למשתמשים. מפעילים אותו רק כשבטוחים שכל תת-דומיין עובד ב-HTTPS.

לבדוק את זה על הפרויקט שלכם

20 דקות בוואטסאפ, ללא עלות. מספרים מה בניתם ואיפה זה נתקע, ויוצאים עם הצעד הבא.

  • מבית Elya Studio
  • 5.0 בגוגל
  • 50+ פרויקטים של הצוות בפרודקשן