ใน 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 ได้รองรับการทํางานโดยไม่มีการแจ้งว่าไม่เหมาะสมตั้งแต่เวอร์ชัน 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 ใหม่
ตั้งใจที่จะนำออก | Chromestatus เครื่องมือติดตาม | ข้อบกพร่องของ 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