COEP を使用しているデベロッパーは、COEP 自体は使用しないサードパーティの iframe を埋め込むことができるようになりました。
Chrome バージョン 110 以降では、Iframe 認証情報なしがデフォルトで有効になっています。これにより、Cross-Origin-Embedder-Policy(COEP)を扱うデベロッパーが抱える最も一般的な問題である、COEP を設定していないサードパーティの iframe を埋め込む問題が解決します。
COEP が必要な理由
一部のウェブ API は、Spectre などのサイドチャネル攻撃のリスクを高めます。このリスクを軽減するために、ブラウザではオプトインベースの分離環境であるクロスオリジン分離が提供されています。この環境では、COEP をデプロイする必要があります。クロスオリジン分離により、ウェブサイトは SharedArrayBuffer
、performance.measureUserAgentSpecificMemory()
、高精度で解像度の高いタイマーなどの特権機能を使用できます。
クロスオリジン分離を有効にするには、ウェブサイトが次の HTTP ヘッダーを送信する必要があります。
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
require-corp
の代わりに COEP:credentialless を使用することもできます。詳しくは、ドキュメントをご覧ください。
COEP の有効化に関する課題
クロスオリジン分離により、ウェブページのセキュリティが強化され、強力な機能を有効にできますが、COEP のデプロイは難しい場合があります。最大の課題の一つは、すべてのクロスオリジン iframe に COEP と CORP をデプロイする必要があることです。これらのヘッダーのない iframe はブラウザによって読み込まれません。
iframe 認証情報なしの解決策
COEP を設定しない場合のサードパーティ iframe の埋め込みをサポートするために、<iframe credentialless>
が導入されます。credentialless
属性を <iframe>
要素に追加すると、iframe は別の空のコンテキストから読み込まれます。特に、Cookie なしで読み込まれます。これにより、COEP の制限を削除できます。
例:
<iframe credentialless src="https://example.com">
この iframe は新しいエフェメラル コンテキストで作成され、トップレベルのウェブサイトに関連付けられている Cookie にはアクセスできません。代わりに、空のクッキージャーから始まります。同様に、LocalStorage、CacheStorage、IndexedDB などのストレージ API は、新しいエフェメラル パーティションにデータを読み込んで保存します。パーティションは、現在の最上位ドキュメントと iframe のオリジンの両方にスコープが設定されます。最上位ドキュメントがアンロードされると、このストレージはすべて消去されます。
認証情報のない iframe には、COEP 埋め込みルールは適用されません。安全性は維持されます。毎回新しい空のコンテナから読み込まれるため、攻撃者が狙うパーソナライズされたデータは含まれません。iframe に公開データのみが含まれている場合、攻撃者にとって価値はありません。
デモ
認証情報なしの iframe のデモをご覧ください。
よくある質問
この機能は他のブラウザでも採用されますか?
<iframe>
は <iframe credentialless>
内にネストされていますか?
はい。継承されます。iframe が認証情報なしになると、credentialless
属性がなくても、サブツリー全体のすべての iframe に適用されます。
<iframe credentialless>
から作成されたポップアップも認証情報なしですか?
noopener
が設定されている場合と同様にポップアップが開きます。新しい通常の最上位コンテキストで作成され、認証情報なしではありません。認証情報のない iframe と通信できません。
ドキュメントが認証情報のない iframe に埋め込まれていることを検出する方法
window.credentialless
は、認証情報のない iframe 内では true、それ以外の場合は false です。<iframe credentialless>
をサポートしていないウェブブラウザでは、この値は undefined
です。