CSP の設定
コンテンツセキュリティポリシー (CSP)は、ブラウザーが使用できるリソースを制限するために使用されます。 また、CSP はスクリプトリソースとスタイルリソースの機能を制限することもできます。 Adobe Experience Platform Web SDKには CSP は必要ありませんが、CSP を追加すると攻撃サーフェスが減少して、悪意のある攻撃に対する防御が強化されます。
CSP は、Experience Platform Web SDK のデプロイ方法と設定方法を反映する必要があります。 次の CSP は、SDKが正しく機能するために必要な可能性のある変更を示しています。 具体的な環境によっては、追加の CSP 設定が必要になる場合があります。
コンテンツセキュリティポリシーの例
次の例は、CSP の設定方法を示しています。
Edge ドメインへのアクセスを許可
default-src 'self';
connect-src 'self' EDGE-DOMAIN
上記の例では、EDGE-DOMAIN
をファーストパーティドメインに置き換える必要があります。 ファーストパーティドメインが edgeDomain 設定用に設定されます。 ファーストパーティドメインを設定していない場合は、EDGE-DOMAIN
に置き換える必要 *.adobedc.net
あります。 idMigrationEnabled を使用して訪問者の移行をオンにする場合、connect-src
ディレクティブにも *.demdex.net
を含める必要があります。
NONCE を使用してインラインのスクリプト要素とスタイル要素を許可する
ページのコンテンツを変更で Experience Platform Web SDK ます。インラインスクリプトおよびスタイルタグの作成を承認する必要があります。 これを実現するために、Adobeでは、CSP ディレクティブ default-src に nonce を使用することをお勧めします。 nonce は、一意のページビューごとに 1 回生成される、サーバー生成の暗号的に強力なランダムトークンです。
default-src 'nonce-SERVER-GENERATED-NONCE'
さらに、CSP nonce を、Experience Platform Web SDK ベースコード スクリプトタグの属性として追加する必要があります。 Experience 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 つのオプションは、unsafe-inline
および script-src
の CSP 指令に style-src
を追加することです。
script-src 'unsafe-inline'
style-src 'unsafe-inline'
unsafe-inline
お勧めしません。アプリ内メッセージ用の CSP の設定 in-app-messaging
Web アプリ内メッセージ を設定する場合は、CSP に次のディレクティブを含める必要があります。
default-src blob:;