מדריך · 3 דקות קריאה

Content-Security-Policy בלי לשבור את האתר

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

עודכן ב־ · HackGrade

הקוד וההגדרות נשארים באנגלית.

1. התחילו במצב דיווח בלבד

הדפדפן מדווח על הפרות בקונסול אבל לא חוסם שום דבר.

nginx
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data: https:; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'" always;

2. גלשו באתר וקראו את הקונסול

פתחו DevTools ← Console בדפים המרכזיים (דף הבית, מוצר, עגלה וקופה, טופס יצירת קשר). כל מקור שנחסם מופיע שם. הוסיפו את המקורות שאתם סומכים עליהם, כמו https://www.googletagmanager.com או ספק התשלומים שלכם, להנחיה המתאימה.

3. אכפו

כשהקונסול שקט, שנו את שם הכותרת ל-Content-Security-Policy. השאירו לצידה את כותרת הדיווח בלבד בזמן שאתם בודקים גרסה נוקשה יותר.

.htaccess
Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'"

טיפים לוורדפרס

  • תבניות ותוספים רבים משתמשים בסקריפטים מוטמעים. בהתחלה ייתכן שתצטרכו 'unsafe-inline' ב-script-src. זה חלש יותר, אבל frame-ancestors, ‏object-src ו-base-uri עדיין עוזרים.
  • למדיניות נוקשה, השתמשו ב-nonce: וורדפרס 5.7 ומעלה יכולה להוסיף מאפיינים לסקריפטים שמודפסים עם wp_print_inline_script_tag().
  • החילו CSP נוקשה קודם על הקופה, שם הוא הכי חשוב.

הנחיות שימושיות

  • frame-ancestors 'self': התחליף המודרני ל-X-Frame-Options.
  • upgrade-insecure-requests: משדרגת אוטומטית משאבי http:// ל-https://.
  • connect-src: מגבילה לאן סקריפטים יכולים לשלוח נתונים, מה שעוזר נגד סקימרים.

מקורות

מדריכים קשורים

חינם · מיידי · בלי הרשמה

גלו את הציון שלכם לפני שמישהו אחר יגלה.

סריקה פסיבית בלבד. שום בדיקה חודרנית לא מתבצעת בלי האישור שלכם.

מתחילים בחינם. תוכניות בתשלום מ־12$ לחודש, או דוח חד־פעמי ב־29$. למחירים