איך ה-BBC משיק את HSTS לשיפור האבטחה והביצועים.

ה-BBC משיק את HSTS באתר שלו כדי לשפר את האבטחה והביצועים. אתה מוזמן לגלות מה זה אומר ואיך HSTS יכול לעזור לך.

בשנים האחרונות חלה עלייה מתמדת בהיקף השימוש ב-HTTPS. לפי דוח האינטרנט של ארכיון HTTP לשנת 2021, כ-91% מכל הבקשות למחשבים שולחניים ולניידים הוגשו באמצעות HTTPS. השימוש ב-HTTPS לא רק כאן כדי להישאר, אלא דרישה מוקדמת לשימוש בתכונות כמו Service Worker ובפרוטוקולים מודרניים כמו HTTP/2 ו-HTTP/3.

לאחרונה ניל קרייג (Neil Craig) – אדריכל טכני ראשי ב-BBC – צייץ בציוץ ש-HTTP Strict Transport Security (HSTS) יושק בהדרגה ב-bbc.com. בואו נראה מה זה אומר מבחינת ה-BBC ומה זה יכול להיות מבחינתכם.

הבעיה

שרתי אינטרנט בדרך כלל מאזינים לבקשות גם ביציאות 80 וגם ביציאות 443. יציאה 80 מיועדת לבקשות HTTP לא מאובטחות, ואילו יציאה 443 מיועדת לבקשות HTTPS מאובטחות. זה עלול ליצור בעיה, כי כשמזינים כתובת בסרגל הכתובות ללא קידומת הפרוטוקול https:// — כמו רוב המשתמשים בדרך כלל — דפדפנים מסוימים יפנו את התנועה לגרסת HTTP הלא מאובטחת של האתר, מסיבות מדור קודם (אם כי לא תמיד זה המצב).

דרך נפוצה להבטיח שמשתמשים לא ניגשים לגרסה לא מאובטחת של אתר היא להגדיר הפניה מחדש מסוג HTTP ל-HTTPS עבור כל הבקשות. זה בהחלט עובד, אבל זה מתחיל בשרשרת האירועים הבאה:

  1. השרת מקבל בקשה דרך HTTP.
  2. השרת מנפיק הפניה אוטומטית כדי לעבור ל-HTTPS המקביל למשאב המבוקש.
  3. השרת באמצעות HTTPS חייב לנהל משא ומתן על חיבור מאובטח עם הדפדפן.
  4. התוכן נטען כרגיל.

הפניות אוטומטיות פועלות בצורה תקינה, אבל אפשר להגדיר אותן בצורה שגויה בדרכים שעדיין מאפשרות גישה לגרסה הלא מאובטחת של אתר. גם אם הכול מוגדר כראוי, עדיין יש בעיית אבטחה כי המשתמש עדיין יתחבר באמצעות HTTP לא מאובטח במהלך שלב ההפניה האוטומטית – מה שחושף את המשתמשים להתקפות אדם בתווך מסוכנות.

כניסה ל-HSTS

תמיכה בדפדפן

  • 4
  • 12
  • 4
  • 7

מקור

HSTS נקבע על ידי כותרת תגובת ה-HTTP Strict-Transport-Security של בקשות HTTPS. לאחר ההגדרה, ביקורים חוזרים באתר מפעילים הפניה מחדש מיוחדת שנקראת "הפניה פנימית 307". כלומר, כאשר הדפדפן מטפל בלוגיקת ההפניה, במקום בשרת. פעולה זו מונעת את יירוט הבקשה, מכיוון שהיא אף פעם לא יוצאת מהדפדפן, ולכן היא מאובטחת יותר. יתרון נוסף הוא שסוגים אלה של הפניות אוטומטיות הם מהירים במיוחד, כך שכל זמן אחזור ניכר במהלך קפיצה מ-HTTP ל-HTTPS מתבטל.

הפניה פנימית 307 מ-HTTP ל-HTTPS, המופעלת על ידי כותרת HSTS. ההפניה האוטומטית מסוג 307 נמשכת 2 אלפיות השנייה בלבד.

בדומה לתחביר להוראה max-age של Cache-Control, כותרת HSTS מציינת הוראת max-age. ההוראה הזו מקבלת ערך בשניות שמציין כמה זמן המדיניות תקפה למשך:

Strict-Transport-Security: max-age=3600

בדוגמה שלמעלה, המדיניות אמורה להיכנס לתוקף למשך שעה בלבד.

פריסת HSTS

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

BBC נקטה את הגישה הנכונה בנוגע לפריסת HSTS. כפי שניל קרייג הזכיר בציוץ שלו, הערך הראשוני שהוגדר ל-bbc.com היה max-age=10.

המשמעות של הגישה הזו היא שהמדיניות הייתה בתוקף בהתחלה רק למשך עשר שניות. אין בכך יתרון משמעותי, אבל כדאי לבדוק אם יש בכלל בעיות ביישום HSTS. עם הזמן, תוכלו להגדיל את המדיניות בהדרגה ולראות אם יש בעיות. נכון למועד כתיבת ההודעה הזו, bbc.com מפרטת מדיניות HSTS של max-age=86400, והיא תגדל כמעט בוודאות עם הזמן.

בהחלט לא כדאי לצאת מהשער עם ערך max-age ארוך בעת פריסת HSTS. אתם עשויים למצוא את עצמכם פתאום מתקשים לפתור בעיות בזמן שהמשתמשים נתקלים בבעיות. מתחילים בקטן ומצטברים עם הזמן. כשבטוחים שהכול בסדר, אפשר להגדיר את ההוראה max-age לתקופה ארוכה הרבה יותר. מומלץ להגדיר את max-age לשנה או שנתיים לאחר ההשקה המלאה.

אפשר לבצע ניווטים ראשוניים בטוחים ומהירים יותר בעזרת רשימת הטעינה מראש של HSTS

מדיניות HSTS נכנסת לתוקף רק אחרי הביקור הראשון באתר, ולכן היתרונות לא קיימים בביקור הראשון באתר. לשם כך עדיין תידרש הפניה לא מאובטחת. עם זאת, אפשר לטעון מראש את מדיניות HSTS על ידי שליחת האתר שלכם אל רשימת הטעינה מראש של HSTS – רשימה כתובה בתוך הקוד של אתרים שהדפדפן יודע שהם רק HTTPS. כשהאתר שלכם נמצא ברשימת הטעינה מראש, גם הביקור הראשון מוגן, וזמן האחזור של הפניה אוטומטית מ-HTTP ל-HTTPS באמצעות HSTS יהיה מיידי.

רוצה לנסות?

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