גרסת המקור לניסיון של בקשת הרשאת גישה לרשת פרטית: נתיב להעברת אתרים באמצעות HTTPS

Yifan Luo
Yifan Luo

רקע

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

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

הודעת הרשאה כאפשרות החדשה

הוספת המאפיין החדש 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-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>

דוגמה:

Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

Private-Network-Access-ID: ערך של 48 סיביות שמוצג כ-6 בייטים הקסדצימליים מופרדים בנקודתיים. Private-Network-Access-Name: שם תקין כמחרוזת שתואמת לביטוי הרגולרי /^[a-z0-9_-.]+$/ של ECMAScript. האורך המקסימלי של השם הוא 248 יחידות קוד UTF-8.

הדגמה (דמו)

אפשר לבדוק את הדמו בכתובת: https://private-network-access-permission-test.glitch.me/.

הרשמה לתקופת ניסיון למקור

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

כדי לאפשר לאתר שלכם להשתמש בבקשה להרשאה, צריך להירשם לתקופת הניסיון למקור:

  1. מבקשים אסימון למקור.
  2. משתמשים באסימון באחת מהדרכים הבאות:
    • בקוד ה-HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • בקוד ה-JavaScript: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • בכותרות ה-HTTP: text Origin-Trial: TOKEN_GOES_HERE

אם יש לכם משוב או הצעות לגבי התכונה הזו, אתם יכולים לדווח על בעיה במאגר GitHub.

משאבים