איך מוסיפים Content-Security-Policy (CSP) לאתר
CSP היא ההגנה החזקה ביותר מפני XSS: היא קובעת מאילו מקורות האתר רשאי לטעון סקריפטים, עיצובים ותמונות. כך גם אם תוקף מצליח להזריק קוד, הדפדפן לא מריץ אותו.
חשוב: המדיניות default-src 'self' שבדוגמה חוסמת כל מה שנטען מאתרים אחרים — Google Analytics, פונטים, צ׳אט, תשלומים. התחילו בכותרת Content-Security-Policy-Report-Only עם אותו ערך, בדקו בקונסולה מה נחסם, הוסיפו את המקורות הנחוצים, ורק אז עברו לכותרת האוכפת.
איך מתקנים, לפי הפלטפורמה שלכם
WordPress
איפה: הקובץ functions.php של ערכת העיצוב (או תוסף לקטעי קוד)
add_action('send_headers', function () {
header("Content-Security-Policy: default-src 'self'");
});WordPress שולח את הכותרת Content-Security-Policy בכל טעינת עמוד.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
Cloudflare
איפה: לוח הבקרה של Cloudflare: Rules ← Transform Rules ← Modify Response Header ← Add
Set static — Header name: Content-Security-Policy — Value: default-src 'self'
Cloudflare מוסיף את הכותרת Content-Security-Policy בשרתי הקצה שלו, בלי שינוי בשרת שלכם.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
Vercel / Next.js
איפה: הקובץ next.config.js, בתוך הפונקציה async headers()
module.exports = {
async headers() {
return [{ source: "/(.*)", headers: [
{ key: "Content-Security-Policy", value: "default-src 'self'" },
]}];
},
};Next.js שולח את הכותרת Content-Security-Policy בכל נתיב.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
Netlify
איפה: קובץ `_headers` בתיקיית הפרסום (או netlify.toml)
/* Content-Security-Policy: default-src 'self'
Netlify מוסיף את הכותרת Content-Security-Policy לכל הנתיבים (`/*`).
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
Nginx
איפה: nginx.conf — בתוך הבלוק `server { }`, ואז טענו מחדש את nginx
add_header Content-Security-Policy "default-src 'self'" always;
מוסיף את הכותרת Content-Security-Policy לכל תגובה.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
Apache
איפה: .htaccess (או הגדרות ה-vhost), ואז הפעילו מחדש את Apache
Header always set Content-Security-Policy "default-src 'self'"
מוסיף את הכותרת Content-Security-Policy דרך mod_headers.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
IIS
איפה: web.config — בתוך <system.webServer><httpProtocol><customHeaders>
<add name="Content-Security-Policy" value="default-src 'self'" />
מוסיף את הכותרת Content-Security-Policy ב-IIS.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
שרת האתר שלכם
איפה: הגדרות כותרות התגובה בשרת האתר שלכם
Content-Security-Policy: default-src 'self'
הגדירו את השרת או את ה-CDN לשלוח את הכותרת הזו בכל תגובה.
איך בודקים שזה עבד: טענו מחדש את האתר ובדקו שכותרות התגובה כוללות את `Content-Security-Policy`.
לא בטוחים אם האתר שלכם צריך את התיקון הזה? הסריקה בודקת את זה ועוד עשרות דברים, ומראה מה חסר אצלכם.
לסריקה חינמית של האתר