Skip to main content

コンテンツセキュリティポリシー

コンテンツセキュリティポリシー(CSP)は、信頼できないソースからのコンテンツの読み込みや実行からブラウザーを保護するためのセキュリティレイヤーとして使用します。 このポリシーは、クロスサイトスクリプティング(XSS)攻撃、データインジェクション攻撃など、ブラウザー経由でアプリケーションに行われる特定の種類の攻撃を検出し、軽減するのに役立ちます。

ブラウザーでページを読み込む場合は、スタイルシート、フォント、JavaScriptファイルなどのアセットを含めるように指示されます。 ブラウザーには、アプリケーションの一部であるスクリプトと、第三者によって悪意を持って注入されたスクリプトを区別する方法がありません。 その結果、悪意のあるコンテンツがアプリケーションに読み込まれる可能性があります。 CSPは、このような攻撃からアプリケーションを保護するのに役立ちます。

補足: 攻撃が行われた場合、ブラウザーは違反の発生をアプリケーションに報告します。

CSPは、ユーザーのブラウザーで読み込むことのできる承認済みのコンテンツソースを定義する一連のディレクティブです。 このディレクティブは、Content-Security-Policy HTTP応答ヘッダーでクライアントに送信されます。 各ブラウザーの種類とバージョンは、可能な限りポリシーに従います。 ブラウザーがディレクティブを理解できない場合、そのディレクティブは無視されます。 その他の状況では、ポリシーに明示的に従います。 各ディレクティブは、ブラウザーに表示される内容に影響を与える特定のリソースタイプを管理します。 一意のコンテンツの特定の部分を参照する特別なURLスキーム(data:、blob:、filesystem:など)は、任意のURLのポリシーに一致しないため、明示的に一覧表示する必要があります。

CSPは、Securityカテゴリー内のRule-Access-CSPクラスのインスタンスです。

アプリケーションのコンテンツセキュリティポリシーにアクセスするには、次の操作を行います。

  • アプリケーションエクスプローラを使用して、アプリケーションのコンテンツセキュリティポリシーを一覧表示します。
  • Records Explorerを使用して、利用可能なすべてのコンテンツセキュリティポリシーを一覧表示します。

「Application rule」フォームのIntegration & securityタブで、コンテンツセキュリティポリシーを指定できます。 

CSP
図は、Applicationルールの「Security」タブの「Content security」セクションを示しています。 「Reject and report」と「Report only」の2つのモードがサポートされています。 利用可能な「Policy name」は、pxDefaultAllowAllおよびpxDefaultSecuredです。  

コンテンツセキュリティポリシーのMode(上のスクリーンショットを参照)で選択された値は、ポリシーを適用するか、単にポリシーの使用状況を報告するだけかを決定します。

  • Reject and report - ポリシーを適用する
  • Report only – 報告するが、ポリシーを適用しない

コンテンツセキュリティポリシーは、アプリケーション内のコンテンツを許可リストに登録したソースのみに制限することで、さまざまなセキュリティ上の脅威にさらされるリスクを削減できます。

補足: Pegaは、アプリケーションにコンテンツセキュリティポリシーが定義されていない場合、ガードレールワーニングをスローします。 このアプリケーションのIntegration タブのコンテンツセキュリティポリシーが空白のままです。 本番環境への移行前に、デフォルトのポリシーを使用するか、独自のポリシーを作成することが推奨されます。

Content Security PolicyのModeレポートのみに設定されている場合、Pegaは「Application rule」フォームに以下のガードレールワーニングをスローします。

This application's Content Security Policy mode has been left in Report-Only mode. This mode will not restrict content on your user's browsers, greatly weakening the policy's usefulness. The policy mode should be set to Reject and Report mode.

アプリケーションのセキュリティを強化するために、Content Security Policyのモードを「拒否してレポート」に設定することがベストプラクティスです。

Content Security Policyが適用されている場合、ブラウザーはスクリプトやリソースの実行をブロックし、ブラウザーコンソールに以下のメッセージを表示します。

Content Security Policy of your site blocks some resources because their origin is not included in the content security policy header
The Content Security Policy (CSP) improves the security of your site by defining a list of trusted sources and instructs the browser to only execute or render resources from this list. Some resources on your site can't be accessed because their origin is not listed in the CSP.

 
これを解決するには、以下に一覧表示されたブロックされたリソースがすべて信頼できるものかどうかを注意深く確認し、信頼できる場合は、そのソースをサイトのコンテンツセキュリティポリシーに含めます。 ポリシーは、HTTPヘッダー(推奨)またはHTML<meta>タグを介して設定できます。

注:  信頼できないソースをサイトのContent Security Policyに追加してはいけません。 ソースを信頼できない場合は、代わりに自分のサイトでリソースをホストすることを検討してください。

以下の画像は、Google Mapsが信頼できるソースとして追加されておらず、アプリケーションがGoogle Mapsを参照している場合に、ブラウザーコンソールに表示されるエラーメッセージの例です。

Refused to load the script 'http://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyD1k79C-9eU80kfMdyR-8k3ZcqswwmPgM4&sensor=true&callback=pega.ui.maps.mapsScriptLoaded' because it violates the following Content Security Policy directive: "script-src 'unsafe-inline' 'unsafe-eval' 'self' http://www.google-analytics.com https://ssl.google-analytics.com https://unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

CSP-Reject

 ベストプラクティスとして、ワーニングを非表示にするためにPegaのout-of-the-box機能のpxDefaultAllowAllまたはpxDefaultSecuredを使用するのではなく、カスタマイズされたコンテンツセキュリティポリシーを開発します。

補足: SECU0009セキュリティーアラートは、アプリケーションのContent Security Policyの違反をブラウザーが報告した場合に生成されます。 アラートメッセージには、信頼できないソースがコンテンツを読み込もうとしたことが違反であると記述されています。

コンテンツセキュリティポリシーの設定方法の詳細については、ヘルプトピック「コンテンツセキュリティポリシーフォームのポリシー定義タブ」を参照してください。


このトピックは、下記のモジュールにも含まれています。

If you are having problems with your training, please review the Pega Academy Support FAQs.

このコンテンツは役に立ちましたか?

改善できるところはありますか?

We'd prefer it if you saw us at our best.

Pega Academy has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice