תקופת הניסיון להוצאה משימוש של גישה לרשת פרטית (PNA) להקשרים לא מאובטחים עומדת להסתיים – צריך להטמיע את בקשת ההרשאה של PNA

Yifan Luo
Yifan Luo

Chrome 124 כולל את התכונה גישה לרשת הפרטית כדי להקל על תוכן מעורב. יש תקופת ניסיון להוצאה משימוש של אתרים שנדרשת להם עוד זמן כדי להתכונן לשינוי. עם זאת, תקופת הניסיון הזו תסתיים ב-Chrome 126, שאמור להישלח ב-4 בספטמבר 2024. בפוסט הזה נסביר את השינוי, מידע נוסף על עיצוב התכונה, איך מעבירים את האתרים הקיימים ואיך בודקים את ההטמעה.

מה משתנה?

כדי ליצור חיבורים למכשירים ברשת פרטית שאין להם שמות ייחודיים גלובליים ולכן לא יכולים לקבל אישורי TLS, התכונה הזו מציגה אפשרות חדשה ל-fetch() להצהיר על הכוונה של המפתחים לפנות למכשיר כזה. התכונות החדשות כוללות תכונה חדשה, מבוקרת באמצעות מדיניות, שמגבילה את הגישה של כל אתר ליכולת הזו, וכותרות חדשות לתגובת קדם-ההפעלה של השרת כדי לספק מטא-נתונים נוספים.

מהי גישה לרשת פרטית?

גישה לרשת פרטית (PNA, שנקראה בעבר CORS-RFC1918 וקצרה בשם 'גישה לרשת מקומית') היא תכונת אבטחה שמגבילה את היכולת של אתרים לשלוח בקשות לשרתים ברשתות פרטיות. כך אפשר להגן על המשתמשים ועל הרשתות הפנימיות מפני מתקפות פוטנציאליות כמו Cross-Site Request Forgery (CSRF). Chrome מטמיע בהדרגה את PNA, וההגנה תורחב בגרסאות הבאות.

למה נדרשת בקשת הרשאה?

ב-Chrome 94 נוספה חסימה על גישה לרשת פרטית מאתרים ציבוריים לא מאובטחים. בתקופת הניסיון המתמשכת שלנו: גישה לרשת פרטית מהקשרים לא מאובטחים חשפה אתגרים בהעברת אתרים מושפעים ל-HTTPS. חשש נפוץ הוא הקושי בהעברת מכשירים פרטיים ל-HTTPS, מה שמוביל להפרות של בדיקות תוכן מעורב.

כדי להתמודד עם האתגר הזה, נוספה בקשה להרשאה חדשה במסגרת גרסת מקור לניסיון מ-Chrome 120, והיא תהיה יציבה מ-Chrome 124.

מתי צריך בקשת הרשאה?

תכננו לסיים את תקופת הניסיון להוצאה משימוש של הקשרים לא מאובטחים כמה אבני דרך אחרי שהתכונה של בקשת ההרשאה הפכה לזמינה. כדי להבטיח תאימות, עליכם להעביר את האתרים הציבוריים שלכם ל-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 שצוינו בשרת. אם הכול מוגדר כמו שצריך, צריכה להופיע בקשת ההרשאה הבאה:

יציאה מתקופת הניסיון להוצאה משימוש של הקשר לא מאובטח

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

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

כדאי גם למחוק את האסימון בדף הניסיון.

מה השלב הבא?

הפתרון לבקשות מ-fetch() שאינו API עדיין נמצא בבדיקה.

נבדקו מספר פתרונות, לדוגמה, שימוש ב-Service Workers או יצירת מרחב כתובות יעד כמדיניות Content-Security-Policy חדשה. עם זאת, הצורה הסופית של בקשות מ-fetch() שהן לא ממשקי API עדיין בבדיקה.

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

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

משוב לתרחישים לדוגמה ברשת הפרטית

אם אתם מארחים אתר ברשת פרטית שמחייבת בקשות מרשתות ציבוריות, צוות Chrome ישמח לקבל מכם משוב! אפשר לדווח על בעיה במעקב אחר בעיות ב-Chromium (רכיב: Blink>SecurityFeature>CORS>PrivateNetworkAccess) או במאגר של GitHub.

משאבים