ใน Chrome เกือบทุกเวอร์ชัน เราเห็นการอัปเดตและการปรับปรุงผลิตภัณฑ์ ประสิทธิภาพ และความสามารถของแพลตฟอร์มเว็บเป็นจำนวนมาก บทความนี้จะอธิบายการเลิกใช้งานและการนำออกใน Chrome 56 ซึ่งอยู่ในรุ่นเบต้าตั้งแต่วันที่ 8 ธันวาคม รายการนี้อาจมีการเปลี่ยนแปลงได้ทุกเมื่อ
นำการรองรับใบรับรอง SHA-1 ออก
อัลกอริทึมแฮชการเข้ารหัส SHA-1เริ่มแสดงสัญญาณของความอ่อนแอเมื่อกว่า 11 ปีที่แล้ว และการวิจัยล่าสุดชี้ให้เห็นถึงโอกาสที่จะเกิดขึ้นในเร็วๆ นี้ของการโจมตีที่อาจส่งผลต่อความสมบูรณ์ของโครงสร้างพื้นฐานของคีย์สาธารณะ (PKI) ของเว็บโดยตรง
Chrome ไม่รองรับใบรับรอง SHA-1 อีกต่อไปเพื่อปกป้องผู้ใช้จากการโจมตีดังกล่าว โดยเริ่มตั้งแต่ Chrome 56 ซึ่งเป็นรุ่นที่ใช้งานเสถียรในเดือนมกราคม 2017 การเข้าชมเว็บไซต์ที่ใช้ใบรับรองดังกล่าวจะส่งผลให้มีคำเตือนคั่นระหว่างหน้า ดูรายละเอียดเพิ่มเติมได้ที่บล็อกความปลอดภัยของ Chrome
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
นำการเข้ารหัส ECDSA โหมด CBC ออกใน TLS
โครงสร้างโหมด CBC ของ TLS มีข้อบกพร่อง ทำให้มีความเปราะบางและติดตั้งใช้งานอย่างปลอดภัยได้ยากมาก แม้ว่าการเข้ารหัสโหมด CBC จะยังคงมีการใช้งานอย่างแพร่หลายกับ RSA แต่แทบจะไม่มีการใช้งานกับ ECDSA เบราว์เซอร์อื่นๆ ยังรองรับการเข้ารหัสเหล่านี้อยู่ เราจึงเชื่อว่าความเสี่ยงมีน้อย นอกจากนี้ ECDSA ใน TLS ยังใช้โดยองค์กรเพียงไม่กี่แห่งและมักจะมีการตั้งค่าที่ซับซ้อนกว่า (ไคลเอ็นต์รุ่นเก่าบางรุ่นรองรับเฉพาะ RSA) เราจึงคาดว่าเว็บไซต์ ECDSA จะได้รับการบำรุงรักษาและตอบสนองได้ดีขึ้นในกรณีที่เกิดปัญหา
TLS 1.2 เพิ่มการเข้ารหัสใหม่ตาม AEAD ซึ่งหลีกเลี่ยงปัญหาเหล่านี้ โดยเฉพาะ AES_128_GCM, AES_256_GCM หรือ CHACHA20_POLY1305 แม้ว่าตอนนี้เราจะกำหนดให้ใช้เฉพาะกับเว็บไซต์ที่ใช้ ECDSA เท่านั้น แต่เราขอแนะนำให้ผู้ดูแลระบบทุกคนใช้ การเข้ารหัสที่อิงตาม AEAD ไม่เพียงช่วยปรับปรุงความปลอดภัย แต่ยังช่วยปรับปรุงประสิทธิภาพด้วย AES-GCM มีการสนับสนุนฮาร์ดแวร์ใน CPU รุ่นใหม่ๆ และ ChaCha20-Poly1305 รองรับการใช้งานซอฟต์แวร์ที่รวดเร็ว ขณะเดียวกัน การเข้ารหัส CBC ต้องใช้การลดความเสี่ยงที่ซับซ้อนและช้า รวมถึงการเข้าถึง PRNG ในระเบียนขาออกแต่ละรายการ การเข้ารหัสที่อิงตาม AEAD ยังเป็นข้อกําหนดเบื้องต้นสําหรับการเพิ่มประสิทธิภาพ HTTP/2 และ False Start ด้วย
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
นำท่าทางสัมผัสของผู้ใช้ออกจากการเลื่อนด้วยการแตะ
เราได้เห็นตัวอย่างโฆษณาที่เขียนมาไม่ดีหรือเป็นอันตรายหลายรายการซึ่งทริกเกอร์การนําทางสำหรับการเลื่อนด้วยการสัมผัสในเหตุการณ์ touchstart
หรือ touchend
ทั้งหมด หากเหตุการณ์ "ล้อ" เปิดป๊อปอัปไม่ได้ การเลื่อนด้วยนิ้วก็ไม่ควรเปิดป๊อปอัปเช่นกัน ซึ่งอาจทำให้บางสถานการณ์ใช้งานไม่ได้ เช่น สื่อไม่เล่นเมื่อแตะ หรือป๊อปอัปไม่เปิดเมื่อแตะ Safari ไม่สามารถเปิดป๊อปอัปในสถานการณ์เหล่านี้ทั้งหมดอยู่แล้ว
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
ไม่อนุญาตให้ดึงข้อมูลสคริปต์ทั้งหมดที่มีแอตทริบิวต์ประเภท/ภาษาไม่ถูกต้อง
ปัจจุบันเครื่องมือสแกนการโหลดล่วงหน้าของ Chrome จะดึงข้อมูลรายการในองค์ประกอบ <scripts>
โดยไม่คำนึงถึงค่าของแอตทริบิวต์ type
หรือ language
แต่สคริปต์จะไม่ทำงานเมื่อแยกวิเคราะห์ การเลิกใช้งานการดึงข้อมูลจะทำให้เครื่องมือสแกนการโหลดล่วงหน้าและโปรแกรมแยกวิเคราะห์มีความหมายเหมือนกัน และเราจะไม่เริ่มการดึงข้อมูลสําหรับสคริปต์ที่จะไม่ใช้ การดำเนินการนี้มีไว้เพื่อบันทึกข้อมูลสําหรับผู้ใช้ที่ไปยังเว็บไซต์ซึ่งมีแท็กสคริปต์ที่กําหนดเองจํานวนมากซึ่งประมวลผลหลัง (เช่น type="text/template"
)
sendBeacon API ครอบคลุม Use Case ของการใช้สคริปต์ที่ไม่ถูกต้องเพื่อ ping เซิร์ฟเวอร์อย่างเพียงพอ
การเปลี่ยนแปลงนี้ทำให้ Chrome สอดคล้องกับ Safari แม้ว่า Firefox จะยังคงขอสคริปต์อยู่ก็ตาม ไม่ว่าจะประเภทหรือภาษาใดก็ตาม
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
นำ MediaStreamTrack.getSources() ออก
วิธีการนี้ไม่ได้อยู่ในข้อมูลจำเพาะอีกต่อไปและเบราว์เซอร์หลักอื่นๆ ไม่รองรับ เราได้แทนที่ด้วย MediaDevices.enumerateDevices()
ซึ่ง Blink รองรับโดยไม่ต้องใช้ Flag ตั้งแต่เวอร์ชัน 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);
}
};
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
นําคําสั่ง CSP ของ reflected-xss ออก
ฉบับร่างแรกๆ ของข้อกําหนดนโยบายความปลอดภัยของเนื้อหาระดับ 2 มีคําสั่ง reflected-xss
ซึ่งไม่ได้ให้อะไรมากกว่าส่วนหัว X-XSS-Protection
นอกเหนือจากไวยากรณ์ที่ต่างกัน คำสั่งนี้ถูกนําออกจากข้อกําหนดในปี 2015 แต่ก่อนหน้านั้นได้มีการนําไปใช้ใน Chrome
เรากําลังนําการรองรับคําสั่งนี้ออก
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
แทนที่คำสั่ง "referrer" ของ CSP
คำสั่ง CSP referrer
อนุญาตให้เจ้าของเว็บไซต์กำหนดนโยบาย URL ที่มาจากส่วนหัว HTTP ฟีเจอร์นี้ไม่เพียงมีการใช้งานน้อยมาก แต่ยังไม่ได้อยู่ในข้อกำหนดของ W3C อีกต่อไป
เว็บไซต์ที่ยังคงต้องใช้ฟังก์ชันนี้ควรใช้ <meta name="referrer">
หรือส่วนหัว Referrer-Policy ใหม่
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium
นำช่อง PaymentAddress.careOf ออก
อินเทอร์เฟซ PaymentAddress
มีช่อง careOf
ที่ไม่เป็นไปตามมาตรฐาน (ไม่มีมาตรฐานที่อยู่ที่เป็นที่ยอมรับซึ่งรองรับ) นอกจากนี้ ช่อง careOf
ก็ไม่จําเป็น เนื่องจากช่องผู้รับและองค์กรรองรับกรณีการใช้งานที่จําเป็นทั้งหมดได้อย่างเพียงพอ การเพิ่ม careOf
ก่อให้เกิดปัญหาสำคัญในด้านการทำงานร่วมกันกับสคีมาและ API ที่อยู่ไปรษณีย์ที่มีอยู่ อ่านข้อเสนอในการนําข้อกําหนดออกใน GitHub เพื่อดูการพูดคุยอย่างละเอียด
Intent to Remove | ข้อบกพร่องของ Chromium
นำ SVGViewElement.viewTarget ออก
แอตทริบิวต์ SVGViewElement.viewTarget
ไม่ได้อยู่ในข้อกำหนด SVG2.0 และการใช้งานมีน้อยหรือไม่มีเลย เราเลิกใช้งานแอตทริบิวต์นี้ใน Chrome 54 และนําออกไปแล้ว
Intent to Remove | Chromestatus Tracker | ข้อบกพร่องของ Chromium