כמעט בכל גרסה של Chrome ניתן לראות מספר משמעותי של עדכונים ושיפורים למוצר, לביצועים שלו וליכולות של פלטפורמת האינטרנט. במאמר הזה נתאר את ההוצאה משימוש וההסרות ב-Chrome 56, שנמצא בגרסת בטא נכון ל-8 בדצמבר. הרשימה הזו עשויה להשתנות בכל עת.
הסרת התמיכה באישורי SHA-1
אלגוריתם הגיבוב הקריפטוגרפי SHA-1 הציג לראשונה סימנים לחולשה לפני יותר מ-11 שנים, ומחקרים שבוצעו לאחרונה מצביעים על אפשרות קרובה למתקפות שעלולות להשפיע ישירות על תקינות התשתית של מפתח ציבורי באינטרנט (PKI).
כדי להגן על משתמשים מפני מתקפות כאלה, Chrome לא תומך יותר באישורי SHA-1 שמתחילים ב-Chrome 56, שהגרסה היציבה שלו היא בינואר 2017. אם תבקרו באתר באמצעות אישור כזה, תופיע אזהרה. פרטים נוספים ניתן למצוא בבלוג האבטחה של Chrome.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הסרה של הצפנות ECDSA במצב CBC ב-TLS
הבנייה במצב CBC ב-TLS פגומה, ולכן קשה מאוד להטמיע אותה בצורה מאובטחת. צפנים במצב CBC נמצאים עדיין בשימוש נרחב ב-RSA, אבל הם כמעט לא קיימים ב-ECDSA. דפדפנים אחרים עדיין תומכים בצפנים האלה, אבל אנחנו מאמינים שהסיכון נמוך. בנוסף, ארגונים מעטים משתמשים ב-ECDSA ב-TLS ולרוב בתהליך הגדרה מורכב יותר (חלק מהלקוחות הישנים תומכים רק ב-RSA). לכן אנחנו צופים שאתרי ECDSA יתחזקו בצורה טובה יותר ויהיו יותר מגיבים למקרים של בעיות.
ל-TLS 1.2 נוספו הצפנים חדשים על סמך מפתחות הצפנה, שמאפשרים למנוע את הבעיות האלה, במיוחד AES_128_GCM, AES_256_GCM או CHACHA20_POLY1305. בשלב זה, הדרישה הזו תקפה רק לאתרים המבוססים על ECDSA, אבל היא מומלצת לכל האדמינים. הצפנות המבוססות על AEAD לא רק משפרים את האבטחה, אלא גם מהביצועים. ל-AES-GCM יש תמיכה בחומרה במעבדים (CPU) עדכניים, וב-ChaCha20-Poly1305 אפשר להטמיע תוכנה במהירות. בינתיים, לצפנות CBC נדרשת מיטיגציות מורכבות איטיות וגישה ל-PRNG בכל רשומה יוצאת. הצפנות המבוססות על AEAD הן גם דרישה מוקדמת לאופטימיזציות של HTTP/2 ו-False Start.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הסרת תנועות המשתמש מגלילה באמצעות מגע
נתקלנו בדוגמאות רבות של מודעות שכתובות בצורה גרועה או מודעות זדוניות, שמפעילות ניווט בגלילות מגע ב-touchstart
או בכל האירועים של touchend
. אם אירוע 'גלגל' לא יכול לפתוח חלון קופץ, גם
גלילה באמצעות מגע לא אמורה לפעול. הפעולה הזו עלולה לגרום לשיבושים מסוימים, כמו מדיה שלא פועלת במגע או חלונות קופצים שלא נפתחים במגע. בכל אחד מהתרחישים האלה, Safari לא מצליח לפתוח
חלונות קופצים.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
השבתת כל האחזורים של סקריפטים עם מאפייני סוג/שפה לא חוקיים
נכון לעכשיו, סורק הטעינה מראש של Chrome מאחזר פריטים ברכיבי <scripts>
ללא קשר לערך של המאפיין type
או language
, אבל הסקריפט
לא יתבצע כשינותחו. כשמוציאים משימוש את האחזור, הסמנטיקה של הסורק של הטעינה מראש ושל המנתח תהיה זהה, ולכן לא נבצע אחזורים לסקריפטים שלא נשתמש בהם. הפעולה הזו נועדה לשמור נתונים למשתמשים שמנווטים לאתרים עם הרבה תגי סקריפט בהתאמה אישית שעברו עיבוד (כמו type="text/template"
, לדוגמה).
התרחיש לדוגמה של שימוש בסקריפטים לא חוקיים לשרתי פינג מכוסה כראוי על ידי sendBeacon API.
השינוי הזה מתאים את Chrome ל-Safari, למרות ש-Firefox עדיין מבקש סקריפטים ללא קשר לסוג או לשפה.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הסרה של MediaStreamTrack.getSources()
השיטה הזו כבר לא חלק מהמפרט והיא לא נתמכת על ידי אף דפדפן ראשי אחר. היא הוחלפה ב-MediaDevices.enumerateDevices()
, שנתמך ב-Blink ללא דגלים מאז גרסה 47, ונתמכת גם על ידי דפדפנים אחרים. למטה מוצגת דוגמה לכך. הפונקציה getCameras()
ההיפותטית הזו משתמשת קודם בזיהוי תכונות כדי למצוא את enumerateDevices()
ולהשתמש בו. אם ייכשל זיהוי התכונה, יתבצע חיפוש של
getSources()
ב-MediaStreamTrack
. לבסוף, אם אין תמיכה ב-API מסוג כלשהו, מחזירים את מערך cameras
הריק.
function getCameras(camerasCallback) {
var cameras = [];
if('enumerateDevices' in navigator.mediaDevices) {
navigator.mediaDevices.enumerateDevices()
.then(function(sources) {
return sources.filter(function(source) {
return source.kind == 'videoinput'
});
})
.then(function(sources) {
sources.forEach(function(source) {
if(source.label.indexOf('facing back') >= 0) {
// move front facing to the front.
cameras.unshift(source);
}
else {
cameras.push(source);
}
});
camerasCallback(cameras);
});
}
else if('getSources' in MediaStreamTrack) {
MediaStreamTrack.getSources(function(sources) {
for(var i = 0; i < sources.length; i++) {
var source = sources[i];
if(source.kind === 'video') {
if(source.facing === 'environment') {
// cameras facing the environment are pushed to the front of the page
cameras.unshift(source);
}
else {
cameras.push(source);
}
}
}
camerasCallback(cameras);
});
}
else {
// We can't pick the correct camera because the API doesn't support it.
camerasCallback(cameras);
}
};
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הסרת הוראה של CSP ממוחזרת-xss
הטיוטות המוקדמות של המפרט של Content Security Policy Level 2
כללו הוראה reflected-xss
שלא הציעה יותר מהכותרת X-XSS-Protection
, מלבד תחביר שונה. ההוראה הזו הוסרה מהמפרט ב-2015, אבל לא לפני ההטמעה ב-Chrome.
אנחנו מסירים את התמיכה בהוראה הזו.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
החלפת הוראת 'גורם מפנה' של CSP
ההוראה referrer
של CSP אפשרה לבעלי אתרים להגדיר מדיניות לגורם מפנה מכותרת HTTP. מעבר לכך, שהשימוש בתכונה הזו נמוך מאוד, הוא גם כבר לא חלק ממפרט של W3C.
באתרים שעדיין נדרשת בהם הפונקציונליות הזו, צריך להשתמש ב-<meta name="referrer">
או
בכותרת Referrer-Policy החדשה.
כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium
הסרת השדה PaymentAddress.careOf
בממשק PaymentAddress
יש שדה careOf
לא סטנדרטי (אין תמיכה בסטנדרטים ידועים של כתובות). גם השדה careOf
לא נחוץ, כי השדות של הנמען והארגון תומכים במידה מספקת בכל התרחישים לדוגמה הנדרשים. ההוספה של careOf
יוצרת בעיות משמעותיות מבחינת יכולת הפעולה ההדדית עם הסכימות הקיימות של כתובות למשלוח דואר וממשקי API. לדיון מקיף יותר, קראו את ההצעה להסרת המפרט ב-GitHub.
הסרה של SVGViewElement.viewTarget
המאפיין SVGViewElement.viewTarget
לא חלק מהמפרט של SVG2.0, והשימוש בו קטן או לא קיים. המאפיין הזה הוצא משימוש ב-Chrome 54 ועכשיו הוא הוסר.