設定CSP

A 內容安全性原則 (CSP)可用來限制瀏覽器可使用的資源。 CSP也可限制指令碼和樣式資源的功能。 Adobe Experience Platform Web SDK不需要CSP,但新增一個CSP可減少攻擊面,以防止惡意攻擊。

CSP必須考量如何進行 Platform Web SDK 已部署和設定。 下列CSP顯示SDK可能需要哪些變更才能正常運作。 視您的特定環境而定,可能需要其他CSP設定。

內容安全性原則範例

以下範例說明如何設定CSP。

允許存取邊緣網域

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

在上述範例中, EDGE-DOMAIN 應該取代為第一方網域。 第一方網域是針對 edgeDomain 設定。 如果尚未設定第一方網域, EDGE-DOMAIN 應取代為 *.adobedc.net. 如果使用開啟訪客移轉 idMigrationEnabled,則 connect-src 指示詞也需要包含 *.demdex.net.

使用NONCE允許內嵌指令碼和樣式元素

Platform Web SDK 可以修改頁面內容,而且必須獲得核准才能建立內嵌指令碼和樣式標籤。 若要完成此操作,Adobe建議使用Nonce default-src CSP指示詞。 Nonce是伺服器產生的密碼編譯增強隨機權杖,每個唯一頁面檢視產生一次。

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,則另一個選項是新增 unsafe-inlinescript-srcstyle-src CSP指示:

script-src 'unsafe-inline'
style-src 'unsafe-inline'
NOTE
Adobe會 建議指定 unsafe-inline 因為它允許任何指令碼在頁面上執行,這限制了CSP的優點。

設定CSP以供應用程式內傳訊使用 in-app-messaging

當您設定 網頁應用程式內傳訊中,您必須在CSP中加入下列指令:

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