حذف و حذف API در Chrome 56

جو مدلی
Joe Medley

تقریباً در هر نسخه کروم، شاهد تعداد قابل توجهی از به‌روزرسانی‌ها و بهبودها در محصول، عملکرد آن و همچنین قابلیت‌های پلتفرم وب هستیم. این مقاله لغو و حذف Chrome 56 را شرح می‌دهد، که از 8 دسامبر در نسخه بتا است. این فهرست در هر زمان ممکن است تغییر کند.

پشتیبانی از گواهینامه های SHA-1 را حذف کنید

الگوریتم هش رمزنگاری SHA-1 برای اولین بار بیش از یازده سال پیش نشانه هایی از ضعف را نشان داد و تحقیقات اخیر به احتمال قریب الوقوع حملاتی اشاره می کند که می تواند مستقیماً بر یکپارچگی زیرساخت کلید عمومی وب (PKI) تأثیر بگذارد.

برای محافظت از کاربران در برابر چنین حملاتی، Chrome دیگر از گواهی‌های SHA-1 که در Chrome 56 شروع می‌شود، که انتشار پایدار آن در ژانویه 2017 است، پشتیبانی نمی‌کند. بازدید از سایتی با استفاده از چنین گواهی‌نامه‌ای منجر به یک هشدار بین‌المللی می‌شود. ما جزئیات بیشتری را در مورد وبلاگ امنیتی Chrome ارائه می دهیم.

قصد حذف | ردیاب Chromestatus | اشکال کروم

رمزهای ECDSA حالت CBC را در TLS حذف کنید

ساختار حالت CBC TLS ناقص است و اجرای ایمن آن را شکننده و بسیار دشوار می کند. اگرچه رمزهای حالت CBC هنوز به طور گسترده با RSA استفاده می شوند، اما در ECDSA تقریباً وجود ندارند. مرورگرهای دیگر همچنان از این رمزها پشتیبانی می کنند، ما معتقدیم که خطر کم است. علاوه بر این، ECDSA در TLS توسط تعداد کمی از سازمان‌ها و معمولاً با تنظیمات پیچیده‌تر استفاده می‌شود (برخی از مشتریان قدیمی‌تر فقط از RSA پشتیبانی می‌کنند)، بنابراین ما انتظار داریم که سایت‌های ECDSA بهتر نگهداری شوند و در صورت بروز مشکل پاسخگوتر باشند.

TLS 1.2 رمزهای جدیدی را بر اساس AEAAD اضافه کرد که از این مشکلات جلوگیری می کند، به ویژه AES_128_GCM، AES_256_GCM، یا CHACHA20_POLY1305. اگرچه ما در حال حاضر این را فقط برای سایت های مبتنی بر ECDSA نیاز داریم، اما برای همه مدیران توصیه می شود. رمزهای مبتنی بر AEAD نه تنها امنیت را بهبود می بخشند، بلکه عملکرد را نیز بهبود می بخشند. AES-GCM از پشتیبانی سخت افزاری در CPU های اخیر برخوردار است و ChaCha20-Poly1305 اجرای سریع نرم افزار را پذیرفته است. در همین حال، رمزهای CBC نیاز به کاهش‌های پیچیده و دسترسی PRNG در هر رکورد خروجی دارند. رمزهای مبتنی بر AEAD نیز پیش نیازی برای بهینه سازی HTTP/2 و False Start هستند.

قصد حذف | ردیاب Chromestatus | اشکال کروم

حرکات کاربر را از اسکرول لمسی حذف کنید

ما نمونه‌های متعددی از تبلیغات بد نوشته شده یا بدی را دیده‌ایم که پیمایش را برای اسکرول‌های لمسی در touchstart یا همه رویدادهای touchend راه‌اندازی می‌کنند. اگر رویداد "چرخ" نمی تواند یک پنجره بازشو باز کند، پیمایش لمسی نیز نباید باز شود. این ممکن است برخی از سناریوها را از بین ببرد، برای مثال پخش نشدن رسانه در لمس، یا باز نشدن پنجره‌های بازشو هنگام لمس. سافاری در تمام این سناریوها به‌طور بی‌صدا نمی‌تواند پنجره‌های بازشو باز کند.

قصد حذف | ردیاب Chromestatus | اشکال کروم

همه واکشی‌ها برای اسکریپت‌هایی با ویژگی‌های نوع/زبان نامعتبر مجاز نیست

در حال حاضر، اسکنر پیش‌بارگیری Chrome، بدون توجه به مقدار ویژگی type یا language ، موارد را در عناصر <scripts> واکشی می‌کند، اگرچه اسکریپت هنگام تجزیه اجرا نمی‌شود. با منسوخ کردن واکشی، اسکنر پیش بارگذاری و تجزیه کننده معنایی یکسان خواهند داشت و ما برای اسکریپت هایی که استفاده نمی کنیم واکشی را آغاز نمی کنیم. این برای ذخیره داده‌ها برای کاربرانی است که به سایت‌هایی با تعداد زیادی تگ اسکریپت سفارشی که پس از پردازش می‌شوند هدایت می‌شوند (مثلاً type="text/template" ).

مورد استفاده از اسکریپت های نامعتبر برای سرورهای پینگ به اندازه کافی توسط sendBeacon API پوشش داده شده است.

این تغییر کروم را با سافاری هماهنگ می‌کند، اگرچه فایرفاکس همچنان بدون در نظر گرفتن نوع یا زبان، اسکریپت‌ها را درخواست می‌کند.

قصد حذف | ردیاب Chromestatus | اشکال کروم

حذف 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);
      }
    };

قصد حذف | ردیاب Chromestatus | اشکال کروم

دستورالعمل CSP بازتابیده-xss را حذف کنید

پیش‌نویس‌های اولیه مشخصات سطح 2 خط‌مشی امنیت محتوا حاوی یک دستورالعمل reflected-xss بود که چیزی جز هدر X-XSS-Protection به جز یک نحو متفاوت ارائه نمی‌کرد. این دستورالعمل در سال 2015 از مشخصات حذف شد، اما نه قبل از اجرای آن در کروم. اکنون پشتیبانی از این دستورالعمل حذف شده است.

قصد حذف | ردیاب Chromestatus | اشکال کروم

دستورالعمل CSP 'referrer' را جایگزین کنید

دستورالعمل referrer CSP به صاحبان سایت اجازه می دهد تا یک خط مشی ارجاع دهنده را از سربرگ HTTP تنظیم کنند. این ویژگی نه تنها کاربرد بسیار کمی دارد، بلکه دیگر بخشی از مشخصات W3C نیست.

سایت هایی که هنوز به این قابلیت نیاز دارند باید از <meta name="referrer"> یا سرصفحه Referrer-Policy جدید استفاده کنند.

قصد حذف | ردیاب Chromestatus | اشکال کروم

قسمت PaymentAddress.careOf را حذف کنید

رابط PaymentAddress دارای یک قسمت careOf است که غیراستاندارد است (هیچ استانداردهای آدرس شناخته شده ای از آن پشتیبانی نمی کنند). فیلد careOf نیز غیر ضروری است، فیلدهای گیرنده و سازمان به اندازه کافی از تمام موارد استفاده ضروری پشتیبانی می کنند. افزودن careOf مسائل مهمی را از نظر قابلیت همکاری با طرحواره‌های آدرس پستی و APIهای موجود ایجاد می‌کند. برای بحث کامل تر، پیشنهاد حذف مشخصات در GitHub را بخوانید.

قصد حذف | اشکال کروم

SVGViewElement.viewTarget را حذف کنید

ویژگی SVGViewElement.viewTarget بخشی از مشخصات SVG2.0 نیست و میزان استفاده از آن کم است یا وجود ندارد. این ویژگی در Chrome 54 منسوخ شده بود و اکنون حذف شده است.

قصد حذف | ردیاب Chromestatus | اشکال کروم