Microsoft Edge Japan

Microsoft Edge と Internet Explorer に関する情報をお届けします。

Content Security Policy Level 2 サポートの概要

この記事はマイクロソフト米国本社の Edge 開発チームのブログ Microsoft Edge Dev blog の記事、「Introducing support for Content Security Policy Level 2」 (2017/1/10) の記事の抄訳です。 この記事についてのご質問、ご意見は元記事のほうへお願いいたします。
その他についてはこちらの記事をご参照ください。
Microsoft Edge Dev Blog の翻訳記事を Microsoft Edge Japan ブログで公開します。


Microsoft Edge の Content Security Policy Level 2 (CSP2) のサポートをご紹介することを嬉しく思います。これは、Microsoft Edge をお客様にとって最も安全で、最もセキュアなブラウザーにするための継続的な取り組みの新たな一歩です。CSP2を適切に使用すると、クロス サイト スクリプティングおよびコンテンツのインジェクション攻撃に対する効果的な防御のメカニズムになります。

これは現在のインサイダー  ファーストリングの の EdgeHTML 15.15002 から使用を開始することができ、安定版ビルドは  Windows 10 Creators Update ともに出荷されます。

Screen capture of the Content Security Policy Browser Test loaded in Edge, with CSP and CSP Level 2 both passing.

Microsoft Edge 15.15002 on the CSP Browser Test

Microsoft Edge のすべてのバージョンでサポートされている Content Security Policy により、Web 開発者が Web アプリケーションで使用できるリソースを制限し、Web の一般的な脆弱性のままであるクロスサイトスクリプティング攻撃を防ぐことを手助けします。ただし、Content Security Policy の最初のバージョンは、スクリプトソースまたはスクリプトを直接含むインラインスクリプト要素を使用して Web サイトに実装することは困難でした。

CSP2 は、スクリプトおよびスタイルリソースの nonce およびハッシュのサポートを追加することにより、これらのシナリオを容易にします。nonce とは、CSPポリシーとページ内のスクリプトタグの両方に表示される各ページの読み込みで生成される、暗号化された強力なランダム値です。nonce を使用すると、許可されたソース URL 値のリストの維持を最小限に抑えることができ、スクリプト要素で宣言した信頼済みスクリプトも実行できるようになります。

既存のテンプレートベースの Web アプリケーションで nonce を使用するために、開発者は信頼済みインラインスクリプトごとに nonce トークンを追加します :

1
2
<script nonce="NonceToken">alert("Allowed since NonceToken is declared")</script>
<script nonce="NonceToken" src="https://trustedscriptsource.com.script"></script>

ページがロード時に動的に生成されると、サーバーは nonce 値を生成し、ページ内の NonceToken に挿入して、Content Security Policy HTTP ヘッダーで宣言します :


1
2
Content-Security-Policy: default-src 'self';
     script-src 'self' https://example.com 'nonce-NonceToken'

この CSP 構成により、スクリプトをページ自身のドメインまたは https://example.com からダウンロードして実行できます。

ページ内のスクリプトソース宣言に正しい nonce 値が含まれている場合は、ソース URL に関係なく、そのスクリプトをダウンロードして実行できます。これらの要件を満たさないスクリプトは、Microsoft Edge によってダウンロードすらされません。

CSP2 は、次のサポートを追加します :

  • 新しいディレクティブ directives base-uri, child-src, form-action, frame-ancestors と plugin-types がサポートされています。詳細は、サポートされている CSP ディレクティブを参照してください。
  • バックグラウンドワーカースクリプトは、ドキュメントの読み込みのポリシーとは別に、独自のポリシーによって管理されます。ホストドキュメントと同様に、レスポンスヘッダーでワーカーの CSP を設定できます。
  • 新しいイベント、SecurityPolicyViolationEvent は、CSP の違反によって発生します。同様に、effectiveDirective(違反したポリシー)、statusCode( HTTP 応答コード)、sourceFile(問題のあるリソースの URL )、lineNumber、および columnNumber     など、違反レポートオブジェクトにいくつかの新しいフィールドが追加されました。

私たちは、ChromeとW3C Web Platform Tests と密接に連携して相互運用可能な実装を構築し、Content Security Policy Level 3W3C Web Application Security Working Groupと密接に連携していきます。

次は?

CSP2 は、Web アプリケーション開発者のセキュリティスタンスと多層防御機能の向上を継続するための重要なステップですが、まだまだ沢山あります。次に、CSP3 スペックからの strict-dynamic のサポートの追加に重点を置いて、開発者とサイト管理者がホワイトリストに対する依存を減らしCSPの実装を強化できるようにします。

われわれのレーダーに関する別の CSP ディレクティブは、upgrade-insecure-requestsです。このディレクティブの意味はサイト管理者が、Web アプリケーションの URL 大量の更新を行うことをしなくても、すべてのセキュアなトランスポートを使用して移行をより簡単にするものです。

upgrade-insecure-requests による upgrade-insecure-requests の作業は、現在は将来のバージョンの Microsoft Edge について考慮されています

より安全な Web は同様に開発者、ユーザーとブラウザー・ベンダー問わず、より良いものです、そして、我々はより多くの Web アプリケーションが CSP が提供する保護を利用しているのを見たいです。実装を考えるのための良いリソースは、コンテンツ セキュリティ ポリシーの実装です。ぜひお試しいただき、もし Microsoft Edge での実行に問題がありましたらお知らせください

― Ted Dinklocker, プログラミングマネージャー, Microsoft Edge