コンテンツセキュリティポリシーの概要
Lightning コンポーネントフレームワークは、コンテンツセキュリティポリシー (CSP) を使用してコンテンツに制約を適用します。主な目的は、クロスサイトスクリプト (XSS) 攻撃や他のコードインジェクション攻撃を阻止することです。
CSP は、ページに読み込むコンテンツのソースを制御するためのルールを定義する W3C 標準です。CSP ルールはすべてページレベルで機能し、すべてのコンポーネントとライブラリに適用されます。Web ブラウザは Web ページヘッダーで指定された CSP ルールに従って、スクリプト、画像、その他のデータを含むリソースに関する不明なサーバへの要求をブロックします。CSP ディレクティブは、たとえば HTML でインライン JavaScript を制限することによって、クライアント側の JavaScript にも適用されます。
このフレームワークにより、次の CSP ルールが有効になります。
- JavaScript ライブラリは、組織からのみ参照できます。
べての外部 JavaScript ライブラリは、静的リソースとして組織にアップロードする必要があります。
script-src 'self'
ディレクティブでは、スクリプトソースを同じ発生元からコールする必要があります。詳細は、「サードパーティ JavaScript ライブラリの使用」を参照してください。- リソースはデフォルトで組織にある必要があります。
font-src
、img-src
、media-src
、frame-src
、style-src
、およびconnect-src
ディレクティブは'self'
に設定されます。そのため、フォント、画像、動画、フレームコンテンツ、CSS、スクリプトなどのリソースはデフォルトで組織にある必要があります。CSP 信頼済みサイトを追加することで、サードパーティリソースへのアクセスを許可するように CSP ディレクティブを変更できます。詳細は、「サードパーティ API にアクセスするための CSP 信頼済みサイトの作成」を参照してください。
ただし、これらのリソースでは、プロトコルを HTTPS から HTTP に変更することはできません。
- リソースの HTTPS 接続
べての外部フォント、画像、フレーム、および CSS へのすべての参照には、HTTPS URL を使用する必要があります。この要件は、リソースが組織にあるか、CSP 信頼済みサイトを経由してアクセスするかに関係なく適用されます。
- インライン JavaScript の使用禁止
クリプトタグを使用して JavaScript を読み込むことができず、イベントハンドラでインライン JavaScript を使用することもできません。
script-src
ディレクティブのunsafe-inline
ソースは使用できません。たとえば、次のようにイベントハンドラを使用してインラインスクリプトを実行することはできません。
すべてのブラウザで CSP が適用されるわけではありません。CSP が適用されるブラウザのリストについては、caniuse.com
を参照してください。
IE11 では CSP がサポートされていないため、サポートされている他のブラウザを使用してセキュリティを強化することをお勧めします。IE11 のサポートは 2022 年 12 月 31 日に終了します。
CSP ポリシー違反は、ブラウザの開発者コンソールのログに記録されます。アプリケーションの機能に影響がない場合は、CSP 違反を無視できます。
次のメッセージは、違反の例を示しています。