การเลิกใช้งานและการนำออกใน Chrome 58

โจ เมดเลย์
โจ้ เมดเลย์

เราเห็นการอัปเดตและการปรับปรุงผลิตภัณฑ์ ประสิทธิภาพ และความสามารถของแพลตฟอร์มเว็บใน Chrome เกือบทุกเวอร์ชัน บทความนี้อธิบายการเลิกใช้งานและการนำออกใน Chrome 58 ซึ่งเป็นเวอร์ชันเบต้า ณ วันที่ 16 มีนาคม รายการนี้อาจเปลี่ยนแปลงได้ตลอดเวลา

เมาส์บน Android หยุดการทำงานของ TouchEvents

จนถึง Chrome 57 เหตุการณ์เมาส์ระดับต่ำของ Android ใน Chrome ดำเนินตามเส้นทางเหตุการณ์ที่ออกแบบมาสำหรับการโต้ตอบด้วยการแตะเป็นหลัก เช่น การเคลื่อนไหวด้วยการลากเมาส์ที่เกิดขึ้นขณะที่กดปุ่มเมาส์จะสร้าง MotionEvents ซึ่งแสดงผ่าน View.onTouchEvent

แต่เนื่องจากกิจกรรมการแตะไม่รองรับการวางเมาส์เหนือ การเลื่อนเมาส์จะเลื่อนตามเส้นทางแยกต่างหาก การออกแบบนี้มีผลข้างเคียงหลายอย่างรวมถึงการโต้ตอบกับเมาส์ TouchEvents, ปุ่มเมาส์ทั้งหมดปรากฏเป็นปุ่มเมาส์ซ้าย และ MouseEvents ถูกระงับโดย TouchEvents

ตั้งแต่ Chrome 58 เป็นต้นไป เมาส์ใน Android M ขึ้นไปจะมีลักษณะดังนี้

  • ไม่เริ่มทำงาน TouchEvents แล้ว
  • เริ่มการทํางานของ MouseEvents ที่ต่อเนื่องกันโดยมีปุ่มและคุณสมบัติอื่นๆ ที่เหมาะสม

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำการจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับแอตทริบิวต์ usemap ออก

ก่อนหน้านี้แอตทริบิวต์ usemap ได้กำหนดเป็นไม่มีตัวพิมพ์เล็กหรือใหญ่ น่าเสียดายที่วิธีนี้มีความซับซ้อนมากพอจนไม่มีเบราว์เซอร์ที่ติดตั้งใช้งานได้อย่างถูกต้อง งานวิจัยแนะนำว่าไม่จำเป็นต้องใช้อัลกอริทึมที่ซับซ้อนเช่นนี้ และแม้แต่การจับคู่ ASCII ที่ไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ก็ไม่จำเป็น

ด้วยเหตุนี้ ข้อกำหนดจึงได้รับการอัปเดตให้ใช้การจับคู่ที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ เราเลิกใช้ลักษณะการทำงานแบบเก่าใน Chrome 57 แล้ว และตอนนี้ได้ถูกนำออกไปแล้ว

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำการนำทางในเฟรมระดับบนสุดที่เริ่มต้นเนื้อหาไปยัง URL ข้อมูลออก

เนื่องจากผู้ใช้เบราว์เซอร์ที่ไม่เชี่ยวชาญทางเทคนิค เราจึงเห็นการใช้รูปแบบ data: ในการปลอมแปลงและการโจมตีแบบฟิชชิงมากขึ้นเรื่อยๆ เพื่อป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ เราจึงบล็อกไม่ให้หน้าเว็บโหลด URL data: ในเฟรมระดับบนสุด นโยบายนี้มีผลกับแท็ก <a>, window.open, window.location และกลไกที่คล้ายกัน ชุดรูปแบบ data: จะยังคงใช้งานได้สำหรับทรัพยากรที่โหลดด้านล่างโดยหน้าเว็บ

เราจะนำฟีเจอร์นี้ออกจาก Chrome 60

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำชื่อที่เลิกใช้งานแล้วสำหรับคุณสมบัติเส้นทางการเคลื่อนไหวออก

คุณสมบัติ CSS ของเส้นทางการเคลื่อนไหวช่วยให้ผู้เขียนทำให้ออบเจ็กต์กราฟิกใดๆ เคลื่อนไหวตามเส้นทางที่ผู้เขียนระบุได้ เราได้นำพร็อพเพอร์ตี้หลายรายการมาใช้ใน Chrome 45 เพื่อให้เป็นไปตามข้อกำหนด ชื่อของที่พักเหล่านี้มีการเปลี่ยนแปลงในข้อกำหนดในช่วงกลางปี 2016 Chrome นำชื่อใหม่ใน Chrome 55 และ Chrome 56 และยังใช้งานคำเตือนการเลิกใช้งานคอนโซลอีกด้วย

ใน Chrome 58 เรากำลังนำชื่อพร็อพเพอร์ตี้เก่าออก พร็อพเพอร์ตี้ที่ได้รับผลกระทบ และชื่อใหม่จะแสดงอยู่ด้านล่าง

นำพร็อพเพอร์ตี้ออกแล้ว ชื่อปัจจุบัน
เส้นทางการเคลื่อนไหว เส้นทางออฟเซ็ต
ออฟเซ็ตการเคลื่อนไหว ระยะออฟเซ็ต
การหมุนการเคลื่อนไหว หมุนออฟเซ็ต
การเคลื่อนไหว ออฟเซ็ต

ความตั้งใจที่จะนำออก

นำ EME ออกจากบริบทที่ไม่ปลอดภัย

การใช้ส่วนขยายสื่อที่เข้ารหัส (EME) บางอย่างทำให้เกิดการใช้งานการจัดการสิทธิ์ดิจิทัลที่ไม่ใช่โอเพนซอร์ส เกี่ยวข้องกับการเข้าถึงตัวระบุที่ไม่ซ้ำกันแบบถาวร และ/หรือเรียกใช้แบบไม่มีแซนด์บ็อกซ์หรือที่มีสิทธิ์เข้าถึงที่ได้รับสิทธิ์ สำหรับเว็บไซต์ที่แสดงผ่าน HTTP ที่ไม่ปลอดภัยจะเพิ่มขึ้น เนื่องจากเว็บไซต์ดังกล่าวอาจถูกโจมตีโดยทุกคนในช่อง นอกจากนี้ เมื่อจำเป็นต้องได้รับความยินยอมจากผู้ใช้ ผู้โจมตีอาจแสวงหาผลประโยชน์จากการยอมรับเว็บไซต์ HTTP ที่ไม่ปลอดภัย

มีการนำการรองรับบริบทที่ไม่ปลอดภัยออกจากข้อมูลจำเพาะของ EME เวอร์ชัน 1 และไม่รองรับในคำแนะนำที่เสนอ หรือไม่ได้คาดการณ์ในขั้นสุดท้ายหลังจากนั้น จะไม่ได้อยู่ในคำแนะนำที่เสนอที่กำลังจะมีขึ้นหรือคำแนะนำสุดท้ายที่ตามมา API แสดงข้อความการเลิกใช้งานในต้นทางที่ไม่ปลอดภัยมาตั้งแต่ Chrome 44 (พฤษภาคม 2015) ตอนนี้เรานำ Chrome 58 ออกแล้ว การเปลี่ยนแปลงนี้เป็นส่วนหนึ่งของความพยายามในวงกว้างของเราในการนำฟีเจอร์ที่มีประสิทธิภาพออกจากต้นทางที่ไม่ปลอดภัย

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำผู้โทรเดิมสำหรับ HTMLEmbedElement และ HTMLObjectElement ออก

อินเทอร์เฟซมีตัวเรียกใช้แบบเดิม ซึ่งหมายความว่าอินสแตนซ์สามารถเรียกใช้เป็นฟังก์ชันได้ ปัจจุบัน HTMLEmbedElement และ HTMLObjectElement รองรับฟังก์ชันนี้ ใน Chrome 57 ความสามารถนี้ถูกเลิกใช้งานแล้ว ตั้งแต่ใน Chrome 58 เป็นต้นไป การโทรจะมีการยกเว้น

การเปลี่ยนแปลงนี้ทำให้ Chrome สอดคล้องกับการเปลี่ยนแปลงข้อกำหนดล่าสุด Edge หรือ Safari ไม่รองรับลักษณะการทํางานแบบเดิม และจะถูกนําออกจาก Firefox

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำการเข้ารหัส ChaCha20-Poly1305 แบบก่อนมาตรฐานออก

ในปี 2013 Chrome 31 ได้ติดตั้งใช้งานชุดการเข้ารหัส TLS ใหม่ตามอัลกอริทึม ChaCha20 และ Poly1305 ของ ศาสตราจารย์ Dan Bernstein เราได้กำหนดมาตรฐานเหล่านี้ในภายหลังโดยมีการปรับเปลี่ยนเล็กน้อยที่ IETF เป็น RFC 7539 และ RFC 7905 เราจัดส่งตัวแปรมาตรฐานในช่วงต้นปี 2016 พร้อมกับ Chrome 49 และตอนนี้เราจะนำตัวแปรมาตรฐานก่อนออก

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

ยกเลิกการรองรับการจับคู่ CommonName ในใบรับรอง

RFC 2818 อธิบายถึง 2 วิธีในการจับคู่ชื่อโดเมนกับใบรับรอง ได้แก่ การใช้ชื่อที่มีอยู่ภายในส่วนขยาย subjectAlternativeName หรือหากไม่มีส่วนขยาย SAN ก็จะกลับไปใช้ commonName การสำรองเป็น commonName เลิกใช้งานแล้วใน RFC 2818 (เผยแพร่ในปี 2000) แต่การสนับสนุนยังคงมีอยู่ในไคลเอ็นต์ TLS อีกจำนวนหนึ่ง ซึ่งโดยมากมักจะไม่ถูกต้อง

การใช้ช่อง subjectAlternativeName ทำให้เห็นได้ชัดว่าใบรับรองแสดงการเชื่อมโยงกับที่อยู่ IP หรือชื่อโดเมน และมีการกำหนดไว้อย่างครบถ้วนในการโต้ตอบกับข้อจำกัดชื่อ แต่commonName มีความไม่ชัดเจน การสนับสนุนจึงทำให้มีข้อบกพร่องด้านความปลอดภัยใน Chrome, ไลบรารีที่ Chrome ใช้ และภายในระบบนิเวศ TLS ในวงกว้าง

ความเสี่ยงเกี่ยวกับความเข้ากันได้ในการนำ commonName ออกอยู่ในระดับต่ำ RFC 2818 ได้เลิกใช้งานข้อกำหนดนี้มาเป็นเวลาเกือบ 2 ทศวรรษแล้ว และข้อกำหนดพื้นฐาน (ซึ่งหน่วยงานออกใบรับรองที่ได้รับความไว้วางใจจากสาธารณะต้องปฏิบัติตาม) ได้กำหนดให้ต้องมี subjectAltName ตั้งแต่ปี 2012 Firefox ต้องใช้ subjectAltName สำหรับใบรับรองที่เชื่อถือได้รายการใหม่ที่ออกสู่สาธารณะตั้งแต่ Firefox 48 อยู่แล้ว

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

องค์ประกอบอินเทอร์เฟซ regions, addRegion() และ removeRegion() ถูกนำออกจาก ข้อกำหนดจำเพาะ WebVTT และนำออกใน Chrome 58 เพื่อให้สอดคล้องกับข้อกำหนดล่าสุด เราคาดว่าจะได้รับผลกระทบเพียงเล็กน้อยจากการนำออกนี้เนื่องจากฟีเจอร์นี้ไม่ได้เปิดใช้งานโดยค่าเริ่มต้น (หมายความว่าอยู่เบื้องหลัง) ผู้ที่ต้องการทางเลือกอื่นสามารถใช้พร็อพเพอร์ตี้ VTTCue.region ที่เพิ่มลงใน Chrome 58 ได้

Chromestatus Tracker | ข้อบกพร่อง Chromium

WebAudio: นำอินเทอร์เฟซ AudioSourceNode ออก

อินเทอร์เฟซ AudioSourceNode ไม่ใช่ส่วนหนึ่งของข้อกำหนดเฉพาะ Web Audio สร้างไม่ได้และไม่มีแอตทริบิวต์ ดังนั้นจึงไม่มีฟังก์ชันที่นักพัฒนาซอฟต์แวร์เข้าถึงได้ จึงมีการนําออก

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำแอตทริบิวต์ส่วนกลางของ webkitdropzone

แอตทริบิวต์ส่วนกลางของ dropzone เริ่มใช้โดยข้อกำหนดการลากและวาง HTML5 โดยเป็นวิธีเชิงประกาศในการระบุความเต็มใจที่จะให้องค์ประกอบ HTML เป็นเป้าหมายของการดำเนินการลากและวาง ประเภทเนื้อหาที่สามารถวางลงในองค์ประกอบได้ และการดำเนินการลากและวาง (คัดลอก/ย้าย/ลิงก์)

แอตทริบิวต์นี้ดึงดูดผู้ให้บริการเบราว์เซอร์ไม่สำเร็จ Blink และ WebKit จะใช้เฉพาะแอตทริบิวต์ webkitdropzone ที่มีคำนำหน้า เนื่องจากมีการนำแอตทริบิวต์ dropzone ออกจากข้อกำหนดเฉพาะในต้นเดือนมีนาคม 2017 เราจึงนำเวอร์ชันนำหน้าออกจาก Chrome

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

เลิกใช้งานการแจ้งเตือนที่ไม่ปลอดภัย

การแจ้งเตือนเป็นฟีเจอร์ที่มีประสิทธิภาพเนื่องจากอนุญาตให้เว็บไซต์เรียกใช้ UI ของระบบเพื่อส่งข้อมูลส่วนตัว หรือสัญญาณว่าข้อมูลส่วนตัวมีการเปลี่ยนแปลง ผู้โจมตีอาจดักจับหรือขโมยข้อมูลใดๆ ที่ส่งผ่านการแจ้งเตือนผ่านการเชื่อมต่อที่ไม่ปลอดภัย การพุชจากเว็บต้องใช้ต้นทางที่ปลอดภัย ดังนั้นการเปลี่ยนแปลงนี้จะปรับการแจ้งเตือนที่ไม่ใช่ข้อความ Push ให้ตรงกับข้อความ Push การเปลี่ยนแปลงนี้เป็นส่วนหนึ่งของความพยายามในวงกว้างของเราในการนำฟีเจอร์ที่มีประสิทธิภาพออกจากต้นทางที่ไม่ปลอดภัย

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

เลิกใช้การแจ้งเตือนจาก iframe ที่ไม่ปลอดภัย

คำขอสิทธิ์จาก iframe อาจทำให้ผู้ใช้สับสนได้ เนื่องจากความแตกต่างระหว่างต้นทางของหน้าที่มีและต้นทางของ iframe ที่ส่งคำขอนั้นเป็นเรื่องยาก เมื่อขอบเขตของคำขอไม่ชัดเจน ผู้ใช้ก็ตัดสินได้ยากว่าจะอนุญาตหรือปฏิเสธสิทธิ์

นอกจากนี้ การไม่อนุญาตการแจ้งเตือนใน iframe ยังจะช่วยให้ข้อกำหนดสิทธิ์การแจ้งเตือนสอดคล้องกับข้อความ Push อีกด้วย ซึ่งจะช่วยให้นักพัฒนาแอปง่ายขึ้น

นักพัฒนาซอฟต์แวร์ที่ต้องการฟังก์ชันนี้สามารถเปิดหน้าต่างใหม่เพื่อขอสิทธิ์การแจ้งเตือน

การนำออกจะอยู่ใน Chrome 62

เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium

นำ IndexingDB.webkitGetDatabaseNames() ออก

เราเพิ่มฟีเจอร์นี้เมื่อฐานข้อมูลที่จัดทำดัชนีนั้นค่อนข้างใหม่ใน Chrome และคำนำหน้าก็ได้รับความนิยมอย่างมาก API แบบอะซิงโครนัสจะแสดงผลรายการชื่อฐานข้อมูลที่มีอยู่ในต้นทาง ซึ่งดูเหมือนจะเหมาะสมมากพอ

ขออภัย การออกแบบมีข้อบกพร่อง ผลการค้นหาอาจล้าสมัยทันทีที่ส่งคืนมา จึงสามารถใช้เพื่อการบันทึกเท่านั้น ไม่ใช่ตรรกะของแอปพลิเคชันจริง ปัญหา GitHub จะติดตาม/ลิงก์ไปยังการสนทนาก่อนหน้านี้เกี่ยวกับทางเลือกอื่นๆ ซึ่งจะต้องใช้แนวทางอื่น แม้ว่านักพัฒนาซอฟต์แวร์จะให้ความสนใจอย่างต่อเนื่อง แต่การขาดการดำเนินการข้ามเบราว์เซอร์ ก็ทำให้ปัญหาได้รับการแก้ไขแล้วโดยผู้เขียนห้องสมุด

นักพัฒนาซอฟต์แวร์ที่ต้องการฟังก์ชันนี้ต้องพัฒนาโซลูชันของตนเอง ตัวอย่างเช่น ไลบรารีอย่าง Dexie.js จะใช้ตารางร่วมซึ่งเป็นฐานข้อมูลอื่นในการติดตามชื่อของฐานข้อมูล

เรานำฟีเจอร์นี้ออกจาก Chrome 60

ความตั้งใจที่จะเลิกใช้งาน | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium