Per limitare le risorse consentite da un browser, viene utilizzato un Content Security Policy (CSP). La CSP può anche limitare le funzionalità delle risorse di script e stili. Adobe Experience Platform Web SDK non richiede una CSP, ma l'aggiunta di una CSP può ridurre la superficie di attacco per prevenire attacchi dannosi.
La CSP deve riflettere il modo in cui Platform Web SDK viene distribuito e configurato. La seguente CSP mostra quali modifiche potrebbero essere necessarie per il corretto funzionamento dell’SDK. È probabile che saranno necessarie ulteriori impostazioni CSP, a seconda dell'ambiente specifico.
Gli esempi seguenti mostrano come configurare una CSP.
default-src 'self';
connect-src 'self' EDGE-DOMAIN
Nell'esempio precedente, EDGE-DOMAIN
deve essere sostituito con il dominio di prime parti. Il dominio di prime parti è configurato per l'impostazione edgeDomain. Se non è stato configurato alcun dominio di prime parti, EDGE-DOMAIN
deve essere sostituito con *.adobedc.net
. Se la migrazione dei visitatori è attivata utilizzando idMigrationEnabled, la direttiva connect-src
deve includere anche *.demdex.net
.
Platform Web SDK può modificare il contenuto della pagina e deve essere approvato per creare script in linea e tag di stile. A questo scopo, Adobe consiglia di utilizzare un nonce per la direttiva CSP default-src. Un nonce è un token casuale crittografato generato dal server che viene generato una volta per ogni visualizzazione di pagina univoca.
default-src 'nonce-SERVER-GENERATED-NONCE'
Inoltre, la voce CSP deve essere aggiunta come attributo al tag script Platform Web SDK base code. Platform Web SDK utilizzerà quindi tale nonce quando si aggiungono tag di script o di stile in linea alla pagina:
<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>
Se non viene utilizzata una nonce, l'altra opzione consiste nell'aggiungere unsafe-inline
alle direttive script-src
e style-src
CSP:
script-src 'unsafe-inline'
style-src 'unsafe-inline'
Adobe not consiglia di specificare unsafe-inline
perché consente l'esecuzione di qualsiasi script sulla pagina, limitando i vantaggi della CSP.