CSP の設定

コンテンツセキュリティポリシー(CSP)は、ブラウザーが使用できるリソースを制限するために使用されます。 また、CSP はスクリプトリソースとスタイルリソースの機能を制限することもできます。 Adobe Experience Platform Web SDK には CSP は必要ありませんが、CSP を追加すると攻撃サーフェスが減少して、悪意のある攻撃に対する防御が強化されます。

CSP は、Platform Web SDK のデプロイ方法と設定方法を反映する必要があります。 次の CSP は、SDK が正しく機能するために必要な可能性のある変更を示しています。 具体的な環境によっては、追加の CSP 設定が必要になる場合があります。

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

次の例は、CSP の設定方法を示しています。

Edge ドメインへのアクセスを許可

default-src 'self';
connect-src 'self' EDGE-DOMAIN

上記の例では、EDGE-DOMAIN をファーストパーティドメインに置き換える必要があります。 ファーストパーティドメインが edgeDomain 設定用に設定されます。 ファーストパーティドメインを設定していない場合は、*.adobedc.net に置き換える必要 EDGE-DOMAIN あります。 idMigrationEnabled を使用して訪問者の移行をオンにする場合、connect-src ディレクティブにも *.demdex.net を含める必要があります。

NONCE を使用してインラインのスクリプト要素とスタイル要素を許可する

ページのコンテンツを変更で Platform Web SDK ます。インラインスクリプトおよびスタイルタグの作成を承認する必要があります。 これを実現するために、Adobeでは CSP ディレクティブ default-src に nonce を使用することをお勧めします。 nonce は、一意のページビューごとに 1 回生成される、サーバー生成の暗号的に強力なランダムトークンです。

default-src 'nonce-SERVER-GENERATED-NONCE'

さらに、CSP nonce を、Platform Web SDK ベースコードスクリプトタグの属性として追加する必要があります。 Platform Web SDK の後、ページにインラインスクリプトタグまたはスタイルタグを追加する際に、nonce が使用されます。

<script nonce="SERVER-GENERATED-NONCE">
  !function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
  []).push(o),n[o]=function(){var u=arguments;return new Promise(
  function(i,l){n[o].q.push([i,l,u])})},n[o].q=[])})}
  (window,["alloy"]);
</script>

nonce を使用しない場合、もう 1 つのオプションは、script-src および style-src の CSP 指令に unsafe-inline を追加することです。

script-src 'unsafe-inline'
style-src 'unsafe-inline'
NOTE
Adobeでは、ページ上で任意のスクリプトを実行でき CSP のメリットが制限されるので、unsafe-inline を指定する お勧めしません。

アプリ内メッセージ用の CSP の設定 in-app-messaging

Web アプリ内メッセージを設定する場合は、CSP に次のディレクティブを含める必要があります。

default-src  blob:;
recommendation-more-help
ad108910-6329-42f1-aa1d-5920a2b13636