Configurar uma CSP

Uma Política de Segurança de Conteúdo (CSP) é usada para restringir os recursos que um navegador pode usar. A CSP também pode limitar a funcionalidade de recursos de script e estilo. O Adobe Experience Platform Web SDK não requer um CSP, mas adicionar um pode reduzir a superfície de ataque para impedir ataques mal-intencionados.

A CSP precisa refletir como Platform Web SDK é implantado e configurado. A CSP a seguir mostra quais alterações podem ser necessárias para que o SDK funcione corretamente. Configurações adicionais da CSP provavelmente serão necessárias, dependendo do seu ambiente específico.

Exemplo de política de segurança de conteúdo

Os exemplos a seguir mostram como configurar uma CSP.

Permitir acesso ao domínio de borda

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

No exemplo acima, EDGE-DOMAIN deve ser substituído pelo domínio próprio. O domínio próprio está configurado para a configuração edgeDomain. Se nenhum domínio próprio foi configurado, EDGE-DOMAIN deve ser substituído por *.adobedc.net. Se a migração do visitante estiver ativada usando idMigrationEnabled, a diretiva connect-src também precisará incluir *.demdex.net.

Usar NONCE para permitir script incorporado e elementos de estilo

Platform Web SDK pode modificar o conteúdo da página e deve ser aprovado para criar marcas de script e estilo embutidas. Para fazer isso, a Adobe recomenda o uso de um nonce para a diretiva CSP default-src. Um nonce é um token aleatório criptograficamente forte gerado pelo servidor gerado uma vez para cada exibição de página exclusiva.

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

Além disso, o nonce CSP precisa ser adicionado como um atributo à marca de script Platform Web SDK código base. Platform Web SDK usará esse nonce ao adicionar marcas de estilo ou script embutido à página:

<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 um nonce não for usado, a outra opção será adicionar unsafe-inline às diretivas CSP script-src e style-src:

script-src 'unsafe-inline'
style-src 'unsafe-inline'
NOTE
O Adobe não recomenda especificar unsafe-inline porque ele permite que qualquer script seja executado na página, o que limita os benefícios da CSP.

Configurar uma CSP para mensagens no aplicativo in-app-messaging

Ao configurar Mensagens no aplicativo da Web, você deve incluir a seguinte diretiva na CSP:

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