הוצאה משימוש והסרות ב-Chrome 58

ג'ו מדלי
ג'ו מדלי

כמעט בכל גרסה של Chrome ניתן לראות מספר משמעותי של עדכונים ושיפורים למוצר, לביצועים שלו וליכולות של פלטפורמת האינטרנט. במאמר הזה נתאר את ההוצאה משימוש וההסרות ב-Chrome 58, שנמצא בגרסת בטא נכון ל-16 במרץ. הרשימה הזו עשויה להשתנות בכל עת.

העכבר ב-Android מפסיק להפעיל את TouchEvents

עד גרסה Chrome 57, אירועי עכבר ברמה נמוכה ב-Android ב-Chrome עקבו בעיקר אחרי נתיב אירוע שנועד לאינטראקציות מגע. לדוגמה, תנועת גרירה של העכבר המתרחשת בזמן לחיצה על לחצן העכבר יוצרת MotionEvents, שמועברת דרך View.onTouchEvent.

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

החל מ-Chrome 58, עכבר בגרסת Android M ואילך:

  • לא יפעיל יותר את TouchEvents.
  • הפעלת רצף עקבי של MouseEvents עם לחצנים מתאימים ומאפיינים אחרים.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת התאמה שאינה תלוית-רישיות למאפיין usemap

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

בעקבות זאת המפרט עודכן כדי להחיל התאמה תלוית אותיות רישיות (case-sensitive). ההתנהגות הישנה הוצאה משימוש ב-Chrome 57 ועכשיו היא הוסרה.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת ניווטים במסגרות מובילות שנוצרו על ידי תוכן לכתובות URL של נתונים

בגלל שהם לא מכירים את המשתמשים שלא משתמשים בדפדפנים טכניים, אנחנו רואים יותר ויותר שימוש בסכימה data: למטרות זיוף ופישינג. כדי למנוע זאת, אנחנו חוסמים דפי אינטרנט כך שלא יוכלו לטעון כתובות URL של data: בפריים העליון. הכלל הזה חל על תגי <a>, על window.open, על window.location ועל מנגנונים דומים. הסכמה data: תמשיך לפעול במשאבים שנטענים למטה על ידי דף כלשהו.

התכונה הזו תוסר ב-Chrome 60.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת שמות שהוצאו משימוש במאפיינים של נתיב תנועה

מאפייני CSS של נתיב תנועה מאפשרים למחברים להנפיש כל אובייקט גרפי לאורך נתיב שצוין על ידי המחבר. בהתאם למפרט, מספר מאפיינים הוטמעו ב-Chrome 45. שמות המאפיינים האלה שונו במפרט באמצע 2016. Chrome הטמיע את השמות החדשים ב-Chrome 55 וב-Chrome 56. יושמו גם אזהרות על הוצאה משימוש של המסופים.

ב-Chrome 58, המערכת מסירה את שמות המאפיינים הישנים. בטבלה הבאה מוצגים הנכסים המושפעים והשמות החדשים שלהם.

הנכס שהוסר שם נוכחי
נתיב תנועה נתיב היסט
קיזוז תנועה קיזוז-מרחק
סיבוב-תנועה סיבוב היסט
תנועה קיזוז

כוונה להסיר

הסרת EME מהקשרים לא מאובטחים

חלק מהשימושים בתוספי מדיה מוצפנים (EME) חושפים הטמעות של ניהול זכויות דיגיטלי (DRM) שאינן קוד פתוח, כרוכות בגישה למזהים ייחודיים קבועים ו/או פועלות מחוץ לארגז החול או עם גישה מורשית. סיכוני האבטחה גדלים באתרים שנחשפים דרך HTTP לא מאובטח, כי כל אחד בערוץ עלול לתקוף אותם. בנוסף, כשנדרשת הסכמת משתמש, תוקף האישור שנשאר לאתר HTTP לא מאובטח עלול לנצל לרעה.

התמיכה בהקשרים לא מאובטחים הוסרה מהמפרט של גרסה 1 של EME, והיא לא נתמכת בהמלצה שמוצעת ולא בהמלצה הסופית הבאה. החל מ-Chrome 44 (מאי 2015), מוצגת ב-API הודעה על הוצאה משימוש במקורות לא מאובטחים. עכשיו היא הוסרה ב-Chrome 58. השינוי הזה הוא חלק מהמאמץ הרחב שלנו להסיר תכונות מתקדמות ממקורות לא מאובטחים.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת קורא מדור קודם עבור HTMLEmbedElement ו-HTMLObjectElement

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

בעקבות השינוי הזה Chrome תואם לשינויים האחרונים במפרטים. ההתנהגות מהדור הקודם לא נתמכת ב-Edge או ב-Safari, ומסירים אותה מ-Firefox.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת הצפנות הלא סטנדרטיות של ChaCha20-Poly1305

ב-2013, מערכת Chrome 31 פרסה סטים חדשים של אלגוריתמים להצפנה (cipher suite) מסוג TLS (אבטחת שכבת התעבורה) על סמך האלגוריתמים ChaCha20 ו-Poly1305 של פרופ' דן ברנשטיין. ההגדרות האלה עברו סטנדרטיזציה מאוחר יותר, עם שינויים קטנים, ב-IETF בתור RFC 7539 ו-RFC 7905. שלחנו את הווריאציה הסטנדרטית בתחילת 2016 עם Chrome 49. עכשיו אנחנו מסירים את הווריאציות שמוגדרות מראש.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת תמיכה בהתאמה של CommonName באישורים

ב-RFC 2818 מתוארות שתי שיטות לשיוך של שם דומיין לאישור: באמצעות השמות הזמינים בתוסף subjectAlternativeName, או אם אין תוסף SAN, חוזרים ל-commonName. החלופה ל-commonName הוצאה משימוש ב-RFC 2818 (פורסם בשנת 2000), אבל התמיכה נשארה במספר לקוחות TLS (לרוב באופן שגוי).

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

סיכון התאימות להסרה של commonName הוא נמוך. תקן RFC 2818 יצא משימוש כבר כמעט שני עשורים, והדרישות הבסיסיות (שכל רשויות האישורים הציבוריות חייבות לציית להן) חייב את הנוכחות של subjectAltName מאז 2012. כדי להשתמש ב-subjectAltName באישורים חדשים שהונפקו באופן ציבורי, צריך כבר להשתמש ב-Firefox דרך Firefox 48.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

רכיבי הממשק regions, addRegion() ו-removeRegion() הוסרו ממפרט WebVTT והוסרו בגרסה 58 של Chrome כדי לעמוד במפרט העדכני. אנחנו צופים שההסרה הזו תהיה מועטה, מכיוון שהתכונה מעולם לא הופעלה (כלומר, היא הייתה מאחורי סמל). אם יש צורך בחלופה, אפשר להשתמש במאפיין VTTCue.region שמתווסף ב-Chrome 58.

מעקב אחר סטטוס Chrome | באג ב-Chromium

WebAudio: הסרת הממשק AudioSourceNode

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

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרת מאפיין גלובלי של webkitdropzone

המאפיין הגלובלי dropzone נוסף על ידי מפרט הגרירה והשחרור של HTML5 כשיטה מוצהרת לציון המוּכנוּת של רכיב HTML להיות היעד של פעולת גרירה ושחרור, סוגי התוכן שניתן להשליך אל הרכיב ופעולת הגרירה והשחרור (העתקה/העברה/קישור).

המאפיין לא הצליח למשוך תשומת לב אצל ספקי הדפדפנים. התכונות Blink ו-WebKit מטמיעות רק טופס עם קידומת של המאפיין webkitdropzone. המאפיין dropzone הוסר מהמפרט בתחילת מרץ 2017 והגרסה עם הקידומת תוסר מ-Chrome.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הוצאה משימוש של שימוש לא מאובטח בהתראות

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

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הפסקת השימוש בהתראות ממסגרות iframe לא מאובטחות

בקשות להרשאות ממסגרות iframe עלולות לבלבל את המשתמשים, כי קשה להבחין בין המקור של הדף שמכיל לבין המקור של ה-iframe ששולח את הבקשה. כשהיקף הבקשות לא ברור, למשתמשים קשה יותר להחליט אם לאשר או לדחות אותן.

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

מפתחים שזקוקים לפונקציונליות הזו יכולים לפתוח חלון חדש כדי לבקש הרשאה לשליחת התראות.

ההסרה מתבצעת ב-Chrome 62.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרה של IndexDB.webkitGetDatabaseNames()

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

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

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

התכונה הזו הוסרה ב-Chrome 60.

כוונת הוצאה משימוש | Chromestatus tracker | באג ב-Chromium