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'
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:;