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

Joe Medley
Joe Medley

ใน 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