תמיכה ב-HTTPS באתר היא שלב חשוב בהגנה על האתר ועל המשתמשים מפני התקפות, אבל תוכן מעורב עלול להפוך את ההגנה הזו לחסרת תועלת. דפדפנים יחסמו יותר ויותר תוכן מעורב לא מאובטח, כפי שמוסבר במאמר מהו תוכן מעורב?
במדריך הזה נדגים טכניקות וכלים לתיקון בעיות קיימות של תוכן מעורב ולמניעת בעיות חדשות.
איך למצוא תוכן מעורב באתר שלכם
כשנכנסים לדף HTTPS ב-Google Chrome, הדפדפן מתריע על תוכן מעורב כשגיאות ואזהרות בלוח JavaScript.
במאמר What is mixed content? (מהו תוכן מעורב?) תוכלו למצוא כמה דוגמאות ולראות איך הבעיות מדווחות בכלי הפיתוח ל-Chrome.
דוגמה לתוכן מעורב פסיבי שמוצגות בו האזהרות הבאות.
אם הדפדפן מצליח למצוא את התוכן בכתובת URL מסוג https, הוא משדרג אותה באופן אוטומטי ומציג הודעה.
תוכן מעורב פעיל נחסם ומוצגת אזהרה.
אם מופיעות אזהרות כאלה לגבי 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 בדף,
מה שגורם לבעיה של תוכן מעורב.
איך לטפל בתוכן מעורב בהיקף נרחב
השלבים הידניים שלמעלה מתאימים לאתרים קטנים יותר, אבל באתרים גדולים או באתרים עם הרבה צוותי פיתוח נפרדים, יכול להיות קשה לעקוב אחרי כל התוכן שנטען. כדי לעזור במשימה הזו, אתם יכולים להשתמש במדיניות אבטחת תוכן (CSP) כדי להורות לדפדפן להודיע לכם על תוכן מעורב, ולוודא שהדפים שלכם אף פעם לא טוענים משאבים לא מאובטחים באופן בלתי צפוי.
מדיניות אבטחת תוכן (CSP)
Content Security Policy (CSP) היא תכונה רב-תכליתית בדפדפן שמאפשרת לנהל תוכן מעורב בקנה מידה נרחב. אפשר להשתמש במנגנון הדיווח של CSP כדי לעקוב אחרי תוכן מעורב באתר, ולקבוע מדיניות אכיפה כדי להגן על המשתמשים על ידי שדרוג או חסימה של תוכן מעורב.
כדי להפעיל את התכונות האלה בדף, צריך לכלול את הכותרת Content-Security-Policy או Content-Security-Policy-Report-Only בתגובה שנשלחת מהשרת.
בנוסף, אפשר להגדיר את Content-Security-Policy (אבל לא את Content-Security-Policy-Report-Only) באמצעות תג <meta> בקטע <head> של הדף.
איך למצוא תוכן מעורב באמצעות מדיניות אבטחת תוכן (CSP)
אתם יכולים להשתמש במדיניות אבטחת תוכן כדי לאסוף דוחות על תוכן מעורב באתר שלכם.
כדי להפעיל את התכונה הזו, צריך להגדיר את ההוראה 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 או Mixed Content Scan.
שדרוג בקשות לא מאובטחות
דפדפנים מתחילים לשדרג ולחסום בקשות לא מאובטחות. אתם יכולים להשתמש בהוראות CSP כדי לאלץ שדרוג אוטומטי או חסימה של הנכסים האלה.
ההוראה upgrade-insecure-requests של CSP מנחה את הדפדפן לשדרג כתובות URL לא מאובטחות לפני שליחת בקשות לאחזור מהרשת.
לדוגמה, אם דף מכיל תג תמונה עם כתובת URL מסוג HTTP כמו
<img src="https://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>, וכך כל הדף מוגן.