コンテンツセキュリティポリシーの概要
コンテンツセキュリティポリシー(CSP)は、クロスサイトスクリプティング(XSS)や関連するデータインジェクション攻撃を検出および軽減するのに役立つことで、Adobe Commerceのインストールに対するさらなる防御レイヤーを提供します。 この一般的な攻撃ベクターは、ウェブサイトから発信されたと偽の主張をする悪意のあるコンテンツを挿入することで機能します。 悪意のあるコンテンツが読み込まれて実行された後、データの不正転送を開始することができます。
CSPは、どのコンテンツリソースを信頼できるか、どのコンテンツリソースをブロックすべきかをブラウザーに伝える、標準化されたディレクティブのセットを提供します。 CSPは、慎重に定義されたポリシーを使用して、ブラウザーコンテンツを制限し、ホワイトリストに登録されたリソースのみが表示されるようにすることができます。
設定
サイト運用への干渉を避けるために、CSPを段階的に実装することができます。 CSPには2つの基本的な操作モードがあります:report-only modeとrestrict mode。
レポート専用モード: ブラウザーはポリシー違反を報告するよう指示されていますが、ポリシー違反は適用されません。 リクエストされたリソースがCSPに違反するたびに、ブラウザーは結果として発生したエラーをコンソールに記録します。 次に、コンソールログを使用して、各違反の原因を調査できます。
CSPのエラーが発生したときに確認し、必要なリソースがすべてホワイトリストに登録されるまでポリシーを調整することが重要です。 エラーが発生しなくなった場合は、restrict modeに切り替えても安全です。 設定が不十分なCSPでは、ブラウザーに多数のコンソールエラーを含む空白ページが表示される場合があります。 CSPが適切に設定されていれば、パフォーマンスに影響を与えることなく、ホワイトリストに登録されたコンテンツを配信できます。
制限モード:ブラウザーはすべてのコンテンツポリシーを適用し、ホワイトリストに登録されたリソースへの公開を制限するように指示されます。
Adobe Commerce CSPの実装の最初のフェーズはAdobe Commerce 2.3.5で導入され、CSPはデフォルトでreport-only modeで利用できるようになりました。 Adobe Commerce 2.4.7以降では、CSPは、ストアフロントおよび管理領域の支払いページに対してデフォルトでrestrict-modeに設定され、その他のすべてのページに対してreport-only モードで設定されます。 対応するCSP ヘッダーには、支払いページのscript-src ディレクティブ内にunsafe-inline キーワードが含まれていません。 また、許可されるのは、ホワイトリストに登録されたインラインスクリプトのみです。
CSPは管理者ではなくサーバーから設定されるため、ほとんどのマーチャントは、システムインテグレータまたは開発者の支援を受けて適切に設定する必要があります。 Commerce PHP開発者ガイドの コンテンツセキュリティポリシーを参照してください。
レポート
デフォルトでは、CSPはブラウザーコンソールにエラーを送信しますが、HTTP リクエストでエラーログを収集するように設定できます。 さらに、CSP違反の監視、収集、報告に使用できるサードパーティサービスがいくつかあります。 CSP違反は、管理者またはカスタムモジュールのconfig.xml ファイルからURIを追加することで、収集のためにエンドポイントに報告できます。 Commerce PHP Extensions Developer Guideの レポート URI設定を参照してください。
レポート URIは、CSP違反を監視し、その結果をダッシュボードに表示するサービスです。 マーチャントと開発者の両方が、CSP違反が発生するたびにレポートを受信するためにサービスを使用できます。