איך מוסיפים כותרות אבטחה בכל סביבה
חמש כותרות מכסות כמעט את כל הבסיס. הנה מה כל אחת עושה, והשורות המדויקות לשרת שלכם.
הקוד וההגדרות נשארים באנגלית.
ערכת הפתיחה
Strict-Transport-Security: תמיד להשתמש ב-HTTPS באתר הזה (קראו את מדריך ה-HSTS לפני שמפעילים).X-Content-Type-Options: nosniff: מונעת מדפדפנים לנחש את סוג הקבצים.X-Frame-Options: SAMEORIGIN: מונעת מאתרים אחרים להטמיע את האתר שלכם במסגרת (clickjacking).Referrer-Policy: strict-origin-when-cross-origin: שולחת פחות מהכתובות שלכם לאתרים אחרים.Permissions-Policy: מכבה יכולות דפדפן שאתם לא משתמשים בהן.
nginx
הוסיפו בתוך בלוק ה-server { }, ואז הריצו nginx -t וטענו מחדש.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;שימו לב: אם לבלוק location יש add_header משלו, nginx מתעלם מהכותרות של רמת ה-server באותו location. חזרו על הכותרות שם או שימו אותן בקובץ include משותף.
Apache (.htaccess)
דורש את mod_headers (פעיל אצל רוב חברות האחסון).
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>Cloudflare
- הפעילו HSTS תחת SSL/TLS → Edge Certificates → HTTP Strict Transport Security.
- לשאר הכותרות, צרו Response Header Transform Rule (Rules → Transform Rules → Modify Response Header) שמגדירה כל כותרת כערך קבוע לכל הבקשות הנכנסות.
וורדפרס בלי גישה לשרת
צרו את wp-content/mu-plugins/security-headers.php. תוספי must-use נטענים אוטומטית.
<?php
// Security headers for pages WordPress serves.
add_action( 'send_headers', function () {
header( 'X-Content-Type-Options: nosniff' );
header( 'X-Frame-Options: SAMEORIGIN' );
header( 'Referrer-Policy: strict-origin-when-cross-origin' );
header( 'Permissions-Policy: camera=(), microphone=(), geolocation=()' );
} );זה מכסה רק דפים שנוצרים ב-PHP. קבצים סטטיים וחלק ממנגנוני המטמון עוקפים אותו, ולכן כותרות בשרת או ב-CDN עדיפות כשאפשר.
הצעד הבא: Content-Security-Policy
CSP היא הכותרת החזקה ביותר וזו שהכי סביר שתשבור משהו. פעלו לפי מדריך ה-CSP והתחילו במצב דיווח בלבד.