תמיכה ב-HTTPS לאתר שלכם היא שלב חשוב בהגנה על האתר ועל המשתמשים מפני תקיפות, אבל תוכן מעורב יכול להפוך את ההגנה הזו לחסרת ערך. דפדפנים שרמת האבטחה של התוכן המעורבת הולכת וגוברת, תיחסם על ידי דפדפנים, כפי שמוסבר במאמר מהו תוכן מעורב?
במדריך הזה נדגים את השיטות ואת הכלים לפתרון בעיות קיימות של תוכן מעורב ולמנוע יצירה של תגובות חדשות.
חיפוש תוכן מעורב על ידי ביקור באתר
כשנכנסים לדף HTTPS ב-Google Chrome, הדפדפן מזהיר אותך מפני תוכן מעורב כשגיאות ואזהרות בלוח JavaScript.
בקטע מהו תוכן מעורב?, אפשר למצוא כמה דוגמאות ולראות איך הבעיות מדווחות בכלי הפיתוח ל-Chrome.
בדוגמה של תוכן מעורב פסיבי יוצגו האזהרות הבאות.
אם הדפדפן מצליח למצוא את התוכן בכתובת URL של https
, הוא משדרג אותו באופן אוטומטי, ואז מציג הודעה.
![כלי פיתוח ל-Chrome שמוצגים בהם האזהרות שמופיעות כשהמערכת מזהה תוכן מעורב ומשודרגת](https://web.developers.google.cn/static/articles/fixing-mixed-content/image/passive-mixed-content.jpeg?authuser=5&hl=he)
תוכן מעורב פעיל חסום ויוצג אזהרה.
![כלי פיתוח ל-Chrome שמציגים את האזהרות שמופיעות כשתוכן מעורב פעיל חסום](https://web.developers.google.cn/static/articles/fixing-mixed-content/image/chrome-devtools-showing-7a65755cae4b8.jpg?authuser=5&hl=he)
אם מצאת אזהרות כאלה לגבי http://
כתובות URL באתר שלך,
עליכם לתקן אותן במקור של האתר שלכם.
מומלץ להכין רשימה של כתובות ה-URL האלה, יחד עם הדף שבו מצאת אותן, לשימוש לצורך תיקון הבעיות.
חיפוש תוכן מעורב באתר
אפשר לחפש תוכן מעורב ישירות בקוד המקור.
צריך לחפש את http://
במקור ולחפש תגים שכוללים מאפיינים של כתובות URL מסוג HTTP.
חשוב לשים לב שהוספת http://
במאפיין href
של תגי העוגן (<a>
)
בדרך כלל אינה בעיה של תוכן מעורב, למעט כמה חריגים חשובים שמפורטים בהמשך.
אם האתר שלכם פורסם באמצעות מערכת ניהול תוכן, ייתכן שקישורים לכתובות URL לא מאובטחות יתווספו כשדפים מתפרסמים. לדוגמה, תמונות יכולות להיכלל עם כתובת URL מלאה ולא עם נתיב יחסי. תצטרכו למצוא ולתקן את הבעיות האלה בתוך התוכן של מערכת ניהול התוכן.
תיקון תוכן מעורב
אחרי שתמצאו תוכן מעורב במקור של האתר, תוכלו לבצע את השלבים הבאים כדי לפתור את הבעיה.
אם מופיעה הודעה במסוף שלפיה בקשת משאב שודרגה באופן אוטומטי מ-HTTP ל-HTTPS,
אפשר לשנות בבטחה את כתובת ה-URL http://
של המשאב בקוד שלך ל-https://
.
אפשר גם לשנות את http://
ל-https://
בסרגל כתובות ה-URL של הדפדפן כדי לבדוק אם המשאב זמין באופן מאובטח
ומנסה לפתוח את כתובת ה-URL בכרטיסייה בדפדפן.
אם המשאב לא זמין דרך https://
, כדאי לשקול אחת מהאפשרויות הבאות:
- כוללים את המשאב ממארח אחר, אם יש מארח כזה.
- אם יש לך הרשאה חוקית לעשות זאת, אפשר להוריד ולארח את התוכן באתר ישירות.
- מחריגים לגמרי את המשאב מהאתר.
פתרנו את הבעיה להציג את הדף שבו מצאתם את השגיאה במקור ולוודא שהשגיאה לא מופיעה יותר.
נזהרים משימוש לא סטנדרטי בתגים
היזהרו משימוש לא סטנדרטי בתגים באתר.
לדוגמה, כתובות URL של תג עוגן (<a>
) לא מובילות לשגיאות של תוכן מעורב,
מכיוון שהן גורמות לדפדפן לנווט לדף חדש.
המשמעות היא שבדרך כלל לא צריך לתקן אותן.
עם זאת, חלק מהסקריפטים של גלריית התמונות מבטלים את הפונקציונליות של <a>
וטען את משאב ה-HTTP שצוין על ידי המאפיין href
לתצוגת Lightbox בדף,
שגורמת לבעיית תוכן מעורב.
טיפול בתוכן מעורב בקנה מידה נרחב
השלבים הידניים שלמעלה מתאימים היטב לאתרים קטנים יותר. אבל כשמדובר באתרים גדולים או באתרים גדולים שיש להם צוותי פיתוח נפרדים רבים, יכול להיות קשה לעקוב אחרי כל התוכן שנטען. כדי לעזור במשימה הזו, אפשר להשתמש במדיניות אבטחת תוכן כדי להורות לדפדפן להודיע לך על תוכן מעורב ולוודא שהדפים שלך אף פעם לא טוענים באופן בלתי צפוי משאבים לא מאובטחים.
מדיניות בנושא אבטחת תוכן
Content Security policy (CSP) היא תכונת דפדפן רב-תכליתית שאפשר להשתמש בה כדי לנהל תוכן מעורב בקנה מידה נרחב. ניתן להשתמש במנגנון הדיווח של CSP כדי לעקוב אחר תוכן מעורב באתר, ולספק מדיניות אכיפה להגנה על המשתמשים על ידי שדרוג או חסימה של תוכן מעורב.
כדי להפעיל את התכונות האלה בדף, צריך לכלול את הרכיב
כותרת Content-Security-Policy
או Content-Security-Policy-Report-Only
בתגובה שנשלחה מהשרת שלך.
בנוסף, אפשר להגדיר Content-Security-Policy
(אבל לא Content-Security-Policy-Report-Only
) באמצעות תג <meta>
בקטע <head>
של הדף.
חיפוש תוכן מעורב עם המדיניות בנושא אבטחת תוכן
אפשר להשתמש במדיניות Content Security כדי לאסוף דוחות על תוכן מעורב באתר.
כדי להפעיל את התכונה הזו, צריך להגדיר את ההוראה Content-Security-Policy-Report-Only
על ידי הוספתה ככותרת תגובה לאתר.
כותרת תגובה:
Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint
בכל פעם שמשתמש מבקר בדף באתר שלכם,
הדפדפן שלהם שולח דוחות בפורמט JSON לגבי כל דבר שמפר את מדיניות אבטחת התוכן,
https://example.com/reportingEndpoint
במקרה כזה, בכל פעם שמשאב משנה נטען באמצעות HTTP, דוח נשלח.
הדוחות האלה כוללים את כתובת ה-URL של הדף שבו התרחשה הפרת המדיניות, ואת כתובת ה-URL של משאב המשנה שמפרה את המדיניות.
אם מגדירים את נקודת הקצה לדיווח לתעד את הדוחות האלה:
תוכלו לעקוב אחר התוכן המעורב באתר שלכם בלי לבקר בכל אחד מהדפים בעצמכם.
יש לכך שתי אזהרות:
- המשתמשים צריכים להיכנס לדף שלכם דרך דפדפן שמבין את כותרת ה-CSP. הדבר נכון ברוב הדפדפנים המתקדמים.
- אתם מקבלים דוחות רק על דפים שהמשתמשים שלכם ביקרו בהם. כך שאם יש לכם דפים שלא מקבלים הרבה תנועה, יכול להיות שיעבור זמן מה עד שתקבלו דוחות לגבי האתר כולו.
המדיניות בנושא אבטחת תוכן כולל מידע נוסף ונקודת קצה לדוגמה.
חלופות לדיווח באמצעות CSP
אם האתר מתארח בפלטפורמה כמו Blogger, יכול להיות שאין לך גישה לשינוי הכותרות ולהוספת CSP. במקום זאת, ניתן להשתמש בחלופה מעשית לשימוש בסורק האתר כדי לאתר עבורך בעיות באתר, כמו HTTPSChecker או סריקת תוכן מעורב.
שדרוג בקשות לא מאובטחות
דפדפנים מתחילים לשדרג ולחסום בקשות לא מאובטחות. אפשר להשתמש בהוראות CSP כדי לאלץ שדרוג או חסימה אוטומטיים של הנכסים האלה.
upgrade-insecure-requests
הוראת CSP מורה לדפדפן לשדרג כתובות URL לא מאובטחות לפני שליחת בקשות רשת.
לדוגמה, אם דף מכיל תג תמונה עם כתובת URL מסוג HTTP, למשל
<img src="http://example.com/image.jpg">
הדפדפן שולח בקשה מאובטחת עבור
https://example.com/image.jpg
, כך שהמשתמש נשמר מתוכן מעורב.
כדי להפעיל את ההתנהגות הזו, אפשר לשלוח כותרת Content-Security-Policy
עם ההוראה הבאה:
Content-Security-Policy: upgrade-insecure-requests
או על ידי הטמעת אותה הנחיה בתוך ה-<head>
של המסמך
של קטע באמצעות רכיב <meta>
:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
בדומה לשדרוג אוטומטי של הדפדפן, אם המשאב לא זמין ב-HTTPS,
הבקשה המשודרגת נכשלת והמשאב לא נטען.
כך נשמרת האבטחה של הדף. ההוראה upgrade-insecure-requests
תתבצע מעבר לשדרוג אוטומטי של הדפדפן,
בניסיון לשדרג בקשות שהדפדפן לא עושה כרגע.
ההוראה upgrade-insecure-requests
יורדת לתוך <iframe>
מסמכים,
כדי להבטיח שכל הדף מוגן.