Chrome 124 כולל את התכונה הרשאת גישה לרשת פרטית כדי להקל על תוכן מעורב. אנחנו ממשיכים בתקופת הניסיון להוצאה משימוש לאתרים שזקוקים לזמן נוסף כדי להתכונן לשינוי הזה. עם זאת, תקופת הניסיון הזו תסתיים עם הגרסה 132 של Chrome, שצפויה לצאת ב-4 בפברואר 2025. בפוסט הזה נסביר על השינוי, נרחיב על העיצוב של התכונה, נסביר איך להעביר את האתרים הקיימים ואיך לבדוק את ההטמעה.
מה משתנה?
כדי ליצור חיבורים למכשירים ברשת פרטית שאין להם שמות ייחודיים ברמת העולם, ולכן לא ניתן לקבל עבורם אישורי TLS, התכונה הזו מוסיפה אפשרות חדשה ל-fetch()
כדי להצהיר על הכוונה של המפתחים לדבר עם מכשיר כזה. התכונות האלה כוללות תכונה חדשה מבוקרת-מדיניות כדי לפקח על הגישה של כל אתר ליכולת הזו, וכותרות חדשות לתגובת השרת לפני הטיסה (preflight) כדי לספק מטא-נתונים נוספים.
מהי גישה לרשת פרטית?
גישה לרשת פרטית (PNA, לשעבר CORS-RFC1918 ולעיתים קרובות 'גישה לרשת מקומית') היא תכונת אבטחה שמגבילה את היכולת של אתרים לשלוח בקשות לשרתים ברשתות פרטיות. כך אפשר להגן על משתמשים ורשתות פנימיות מפני התקפות פוטנציאליות, כמו התקפות של גניבת זהות משתמש (CSRF). הטמענו את PNA ב-Chrome בהדרגה, וההגנה תתרחב בגרסאות הבאות.
למה צריך בקשה להרשאה?
ב-Chrome 94 הוספנו חסימה לגישה לרשת פרטית מאתרים ציבוריים לא מאובטחים. במהלך הבדיקה הנוכחית של ההוצאה משימוש של גישה לרשת פרטית מהקשרים לא מאובטחים, נחשפו אתגרים בהעברת אתרים מושפעים ל-HTTPS. אחת מהבעיות הנפוצות היא הקושי להעביר מכשירים פרטיים ל-HTTPS, מה שמוביל להפרות של בדיקות התוכן המעורב.
כדי להתמודד עם האתגר הזה, הוספנו בקשה חדשה להרשאה במסגרת גרסת המקור לניסיון בגרסה 120 של Chrome, ובגרסה היציבה בגרסה 124 של Chrome.
מתי צריך להציג בקשה להרשאה?
תכננו לסיים את תקופת הניסיון להוצאה משימוש של ההקשרים הלא מאובטחים כמה יעדים אחרי שהתכונה של בקשת ההרשאה תהיה זמינה. כדי להבטיח תאימות, עליכם להעביר את האתרים הציבוריים שלכם ל-HTTPS. אם אתם לא יכולים להעביר את השרת הפרטי שלכם ל-HTTPS, התכונה החדשה של בקשת ההרשאה תאפשר לכם להקל על הבדיקות של תוכן מעורב.
תהליך העבודה הרגיל של בקשה לגישה לרשת פרטית עם בקשה להרשאה הוא:
הפעלת ההודעה לבקשת הרשאה
מוסיפים את המאפיין החדש targetAddressSpace
כאפשרות אחזור, ואז הבקשה יכולה לדלג על בדיקת התוכן המעורב.
fetch("http://router.local/ping", {
targetAddressSpace: "private",
});
בהתאם למאמר גישה לרשת פרטית: אנחנו משיקים בדיקות קדם-הפעלה, כל בקשה לרשת פרטית מקדימה בקשת קדם-הפעלה. בקשת קדם-ההפעלה הזו תכלול כותרת חדשה, Access-Control-Request-Private-Network: true
, והתגובה המתאימה חייבת לכלול את הכותרת Access-Control-Allow-Private-Network: true
.
כדי להתאים את ההודעה החדשה לבקשת ההרשאה, המכשירים צריכים לכלול שתי כותרות תגובה חדשות: Private-Network-Access-Name
ו-Private-Network-Access-ID
.
Private-Network-Access-ID
: ערך של 48 סיביות שמוצג כ-6 בייטים הקסדצימליים שמפרידים ביניהם נקודתיים.Private-Network-Access-Name
: שם תקין כמחרוזת שתואם לביטוי הרגולרי של ECMAScript/^[a-z0-9_-.]+$/.
. האורך המקסימלי של השם הוא 248 יחידות קוד UTF-8.
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"
הדגמה (דמו)
אפשר לבדוק את הדמו בכתובת: https://private-network-access-permission-test.glitch.me/.
כדי להשתמש באתר הניסיוני, צריך להפעיל את השרת הפרטי האישי. השרת הפרטי צריך להשיב עם כותרת ה-HTTP Access-Control-Allow-Private-Network: true
, יחד עם הכותרות Private-Network-Access-ID
ו-Private-Network-Access-Name
שצוינו על ידי השרת. אם כל ההגדרות נכונות, אמורה להופיע בקשה להרשאה הבאה:
יציאה מתקופת הניסיון להוצאה משימוש של הקשר לא מאובטח
באתרים שנרשמו לניסיון של Private Network Access להקשרים לא מאובטחים שהוצאו משימוש, זה הזמן להעביר את האתר באמצעות הבקשה החדשה שלנו להרשאה ולצאת מהניסיון עכשיו.
אחרי שמעדכנים את הקוד, מוחקים את אסימון הניסיון בכותרות ה-HTML, JavaScript או HTTP. אם אתם לא זוכרים איפה שמרתם את אסימון הניסיון, תוכלו לעיין בקטע רישום לניסיון לפני ההוצאה משימוש בפוסט הקודם בבלוג.
מומלץ גם למחוק את האסימון בדף של תקופת הניסיון.
מה השלב הבא?
אנחנו עדיין בודקים פתרון לבקשות מ-fetch()
שאינן מ-API.
נבדקו כמה פתרונות, למשל שימוש ב-service workers או שינוי מרחב כתובות היעד כמדיניות Content-Security-Policy חדשה. עם זאת, הפורמט הסופי של בקשות מ-fetch()
שאינן API עדיין בבדיקה.
יכול להיות שבעתיד תהיה תמיכה בבקשות מסגרות משנה באמצעות מדיניות הרשאות.
בעתיד, יכול להיות שנוסיף תמיכה בכללי מדיניות הרשאות כדי להקל על השימוש בפריימים משניים.
משוב לגבי תרחישי שימוש ברשת פרטית
אם אתם מארחים אתר ברשת פרטית שצריך בקשות מרשתות ציבוריות, צוות Chrome רוצה לקבל מכם משוב. אפשר לדווח על בעיה במעקב אחר בעיות ב-Chromium (רכיב: Blink>SecurityFeature>CORS>PrivateNetworkAccess) או במאגר GitHub.