API のサポート終了と削除(Chrome 56)

ジョー・メドレー
Joe Medley

Chrome のほぼすべてのバージョンで、プロダクト、パフォーマンス、ウェブ プラットフォームの機能に関して、多数の更新と改善が行われています。この記事では、12 月 8 日時点でベータ版の Chrome 56 でのサポート終了と削除について説明します。このリストは随時変更される可能性があります。

SHA-1 証明書のサポートを削除する

SHA-1 暗号ハッシュ アルゴリズムは、11 年以上前にまず弱点の兆候が見られました最近の研究では、ウェブの公開鍵基盤(PKI)の整合性に直接影響を与える攻撃が差し迫っている可能性を指摘しています。

このような攻撃からユーザーを保護するため、Chrome 56(安定版が 2017 年 1 月にリリース予定)以降は、SHA-1 証明書がサポートされなくなります。このような証明書を使用してサイトにアクセスすると、インタースティシャル警告が表示されます。詳しくは、Chrome セキュリティ ブログをご覧ください。

削除の目的 | Chromestatus Tracker | Chromium のバグ

TLS の CBC モード ECDSA 暗号を削除する

TLS の CBC モードの構成には欠陥があり、脆弱で安全な実装が非常に困難です。CBC モードの暗号は RSA でまだ広く使用されていますが、ECDSA では事実上存在しません。他のブラウザはまだこれらの暗号をサポートしているため、リスクは低いと考えられます。また、TLS の ECDSA を使用している組織はほとんどなく、通常はより複雑な設定(古いクライアントも 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 の最適化の前提条件でもあります。

削除の目的 | Chromestatus Tracker | Chromium のバグ

タッチ スクロールからユーザー操作を削除する

touchstart イベントまたはすべての touchend イベントでタップ スクロールによってナビゲーションをトリガーする、不適切な広告または悪質な広告のが複数見られています。「wheel」イベントでポップアップを開けない場合は、タッチ スクロールもすべきではありません。これにより、タップ操作でメディアが再生されない、タップ操作でポップアップが開かないなど、一部のシナリオに問題が生じる場合があります。Safari では、これらすべての状況でポップアップが通知されずに開きません。

削除の目的 | Chromestatus Tracker | Chromium のバグ

無効なタイプまたは言語の属性を持つスクリプトで、すべての取得を禁止する

現在、Chrome のプリロード スキャナは、type または language 属性の値に関係なく <scripts> 要素内のアイテムを取得しますが、スクリプトの解析時には実行されません。フェッチを非推奨とすることで、プリロード スキャナとパーサーのセマンティクスは同じになり、使用しないスクリプトのフェッチは開始されなくなります。これは、後処理されているカスタム スクリプトタグ(type="text/template" など)が多数含まれるサイトに移動するユーザーのデータを保存することが目的です。

無効なスクリプトを使用してサーバーに ping するユースケースについては、sendBeacon API で十分にカバーされています。

この変更により Chrome は Safari と連携しますが、Firefox ではタイプや言語に関係なくスクリプトが要求されます。

削除の目的 | Chromestatus Tracker | Chromium のバグ

MediaStreamTrack.getSources() を削除する

このメソッドは仕様に含まれなくなったため、他の主要なブラウザではサポートされていません。これは MediaDevices.enumerateDevices() に置き換えられました。Blink はバージョン 47 以降、フラグなしでサポートしており、他のブラウザでもサポートされています。以下に例を示します。この架空の getCameras() 関数は、最初に特徴検出を使用して enumerateDevices() を検出し、使用します。特徴検出が失敗した場合、MediaStreamTrackgetSources() を探します。最後に、どの種類の 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 Tracker | Chromium のバグ

render-xss CSP ディレクティブを削除する

コンテンツ セキュリティ ポリシー レベル 2 仕様の初期のドラフトには、X-XSS-Protection ヘッダーにすぎない、構文が異なる reflected-xss ディレクティブが含まれていました。このディレクティブは 2015 年に仕様から削除されましたが、Chrome に実装されるまでは削除されていません。現在、このディレクティブはサポートされなくなります。

削除の目的 | Chromestatus Tracker | Chromium のバグ

CSP の「referrer」ディレクティブを置き換える

CSP の referrer ディレクティブを使用することで、サイト所有者は HTTP ヘッダーからリファラー ポリシーを設定できるようになりました。この機能は使用率が非常に低いだけでなく、W3C 仕様の対象でなくなっています。

この機能を引き続き必要とするサイトでは、<meta name="referrer"> または新しい Referrer-Policy ヘッダーを使用する必要があります。

削除の目的 | Chromestatus Tracker | Chromium のバグ

PaymentAddress.careOf フィールドを削除

PaymentAddress インターフェースに標準の careOf フィールドがあります(既知のアドレス標準ではサポートされていません)。careOf フィールドも必須ではありません。受信者フィールドと組織フィールドは、必要なすべてのユースケースを十分にサポートしています。careOf を追加すると、既存の住所スキーマおよび API との相互運用性の点で重大な問題が発生します。詳細については、GitHub の仕様削除の提案をご覧ください。

削除の目的 | Chromium のバグ

SVGViewElement.viewTarget を削除する

SVGViewElement.viewTarget 属性は SVG2.0 仕様の一部ではなく、この属性の使用頻度は少ないか、まったくありません。この属性は Chrome 54 でサポートが終了し、削除されました。

削除の目的 | Chromestatus Tracker | Chromium のバグ