Tempo de leitura: 4 minutos

A Política de Segurança de Conteúdo (CSP) é uma camada essencial de segurança que todo desenvolvedor web moderno precisa implementar para proteger seus visitantes contra ataques de injeção de código, especialmente cross-site scripting (XSS).

Implementar uma CSP eficaz pode reduzir drasticamente os vetores de ataque em seu site, permitindo que você controle exatamente quais recursos podem ser carregados e executados, criando uma barreira robusta contra tentativas maliciosas de explorar vulnerabilidades.

O que é uma Política de Segurança de Conteúdo (CSP)?

A Política de Segurança de Conteúdo é um mecanismo de segurança implementado através de cabeçalhos HTTP ou meta tags que permite aos desenvolvedores controlar precisamente quais recursos podem ser carregados e executados em suas páginas web.

Quando implementada corretamente, uma CSP protege seus usuários contra ataques de injeção de conteúdo, como o cross-site scripting (XSS), onde atacantes tentam inserir e executar código malicioso em seu site.

A CSP funciona como um conjunto de regras que informam ao navegador exatamente quais fontes de conteúdo são consideradas seguras para carregar recursos como scripts, estilos, imagens, fontes e outros ativos web.

Por que uma CSP é crucial para seu site

Implementar uma Política de Segurança de Conteúdo não é apenas uma boa prática — é uma necessidade crítica no ambiente web atual, onde as ameaças de segurança evoluem constantemente.

“Uma CSP bem configurada pode reduzir significativamente o risco de ataques XSS, que continuam sendo uma das vulnerabilidades mais comuns e exploradas na web atualmente.” – OWASP (Open Web Application Security Project)

Sem uma CSP adequada, seu site fica vulnerável a diversos tipos de ataques que podem:

  • Roubar dados sensíveis dos usuários
  • Sequestrar sessões de usuários
  • Redirecionar visitantes para sites maliciosos
  • Danificar a reputação do seu site
  • Comprometer a confiança dos usuários

Como verificar se seu site tem uma CSP implementada

Existem várias maneiras de verificar se seu site já possui uma Política de Segurança de Conteúdo implementada:

1. Usando as Ferramentas de Desenvolvedor do navegador

Abra seu site no navegador, pressione F12 (ou clique com o botão direito e selecione “Inspecionar”), navegue até a aba “Network” (Rede), recarregue a página e verifique os cabeçalhos da resposta HTTP do documento principal. Procure por um cabeçalho chamado “Content-Security-Policy”.

2. Utilizando ferramentas online especializadas

Existem serviços online que podem analisar sua CSP, como o Security Headers ou o Mozilla Observatory. Basta inserir a URL do seu site e obter uma análise detalhada.

3. Verificando o código-fonte da página

Você também pode verificar o código-fonte da sua página (Ctrl+U no navegador) e procurar por uma meta tag com o atributo http-equiv=”Content-Security-Policy”, como:

Como implementar uma CSP em seu site

Existem duas maneiras principais de implementar uma Política de Segurança de Conteúdo:

1. Usando cabeçalhos HTTP (método recomendado)

Este método envolve configurar seu servidor web para enviar o cabeçalho Content-Security-Policy com cada resposta HTTP. A implementação varia dependendo do servidor que você está usando:

Para Apache, adicione ao arquivo .htaccess ou configuração do servidor:

Header set Content-Security-Policy “default-src ‘self’; script-src ‘self’ trusted-scripts.com;”

Para Nginx, adicione à configuração do servidor:

add_header Content-Security-Policy “default-src ‘self’; script-src ‘self’ trusted-scripts.com;”;

Para servidores Node.js com Express:

app.use(function(req, res, next) {
res.setHeader(“Content-Security-Policy”, “default-src ‘self’; script-src ‘self’ trusted-scripts.com;”);
next();
});

2. Usando meta tags HTML

Se você não tem acesso à configuração do servidor, pode usar uma meta tag no do seu documento HTML:

“Embora a implementação via meta tag seja mais fácil, o método de cabeçalho HTTP é preferível porque oferece proteção desde o primeiro byte recebido pelo navegador, enquanto a meta tag só é processada após o parser HTML encontrá-la.” – Mozilla Developer Network (MDN)

Criando uma política CSP eficaz

Uma CSP eficaz deve ser restritiva o suficiente para fornecer segurança, mas flexível o bastante para permitir que seu site funcione corretamente. Aqui estão diretrizes para criar uma política eficaz:

1. Comece com uma política restritiva

Inicie com uma política que permita apenas recursos do mesmo domínio:

Content-Security-Policy: default-src ‘self’;

2. Use o modo relatório para testar

Antes de implementar uma CSP restritiva, use o modo relatório para identificar problemas sem afetar a funcionalidade:

Content-Security-Policy-Report-Only: default-src ‘self’; report-uri /csp-violation-report-endpoint;

3. Refine gradualmente sua política

Com base nos relatórios de violação, adicione as exceções necessárias para cada tipo de recurso:

Content-Security-Policy: default-src ‘self’; script-src ‘self’ cdn.exemplo.com; style-src ‘self’ fonts.googleapis.com; img-src ‘self’ data: images.exemplo.com; font-src ‘self’ fonts.gstatic.com;

4. Evite ‘unsafe-inline’ e ‘unsafe-eval’

Essas diretivas enfraquecem significativamente sua CSP. Em vez disso, use nonces ou hashes para scripts e estilos inline:

Content-Security-Policy: script-src ‘self’ ‘nonce-RandomString123’;

E então no HTML:

console.log(“Script seguro”);

Testando e monitorando sua CSP

Após implementar uma CSP, é crucial testá-la e monitorá-la regularmente:

  • Configure um endpoint para receber relatórios de violação usando a diretiva report-uri
  • Use ferramentas como o CSP Evaluator do Google para analisar sua política
  • Verifique se todas as funcionalidades do site continuam operando normalmente
  • Monitore os logs do servidor em busca de erros relacionados à CSP

Exemplos de políticas CSP para diferentes cenários

Site estático básico

Content-Security-Policy: default-src ‘self’; img-src ‘self’ data:;

Site com recursos de CDNs populares

Content-Security-Policy: default-src ‘self’; script-src ‘self’ https://cdnjs.cloudflare.com; style-src ‘self’ https://fonts.googleapis.com; font-src ‘self’ https://fonts.gstatic.com;

Aplicação web moderna com APIs externas

Content-Security-Policy: default-src ‘self’; script-src ‘self’ https://apis.google.com https://cdn.jsdelivr.net; connect-src ‘self’ https://api.exemplo.com; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https://*.exemplo.com;

Conclusão: Proteja seu site e seus usuários com uma CSP robusta

Implementar uma Política de Segurança de Conteúdo é uma medida fundamental para proteger seu site e seus usuários contra diversos tipos de ataques, especialmente injeções de código malicioso.

Uma CSP bem configurada funciona como uma barreira protetora, controlando precisamente quais recursos podem ser carregados e executados em suas páginas. Isso não apenas melhora a segurança, mas também demonstra seu compromisso com a proteção dos dados dos usuários.

Lembre-se de que a segurança web é um processo contínuo, não um estado final. Revise e atualize regularmente sua CSP para adaptá-la às mudanças no seu site e às novas ameaças de segurança que surgem constantemente.

Você já verificou se o seu site tem alguma CSP implementada? Se encontrar dificuldades durante a implementação, quais aspectos específicos da configuração da CSP estão causando mais dúvidas?

Avatar de Rafael P.

Perguntas Frequentes

Quais são os principais componentes de uma configuração CSP?

Os principais componentes incluem diretivas como ‘default-src’, que define a origem padrão para carregar recursos, ‘script-src’ para scripts, ‘style-src’ para estilos, e ‘img-src’ para imagens, entre outras. Cada uma dessas diretivas permite especificar se o conteúdo pode ser carregado de domínios específicos ou de fontes inline.

Quais são algumas práticas recomendadas para implementar uma CSP eficaz?

É recomendado começar com uma política mais restritiva, usando ‘report-only’ para monitorar violações sem bloqueá-las inicialmente. Gradualmente, você pode ajustar a política com base nos relatórios. Também é importante evitar o uso de ‘unsafe-inline’ e ‘unsafe-eval’, pois isso enfraquece a segurança da CSP.

Como posso testar se a minha CSP está funcionando corretamente?

Você pode usar ferramentas de desenvolvedor do navegador para verificar os cabeçalhos CSP nas respostas HTTP. Além disso, pode implementar a diretiva ‘report-uri’ para receber relatórios de violação que indicam tentativas de carregar conteúdos não permitidos, ajudando a ajustar sua política.

O que é uma Política de Segurança de Conteúdo (CSP)?

A Política de Segurança de Conteúdo (CSP) é um mecanismo de segurança que ajuda a prevenir ataques como cross-site scripting (XSS) e injeções de dados, especificando quais fontes de conteúdo são permitidas para serem carregadas em uma página web.

Como a CSP pode proteger meu site contra ataques XSS?

A CSP permite que você defina quais scripts, imagens e outros recursos podem ser carregados, bloqueando recursos de fontes não confiáveis. Isso dificulta a execução de scripts maliciosos que poderiam ser injetados em sua página por atacantes.

O caminho até aqui

Início » Checklist » Segurança e Configurações Técnicas Essenciais » Há uma política de segurança de conteúdo (Content Security Policy)?

Somente membros podem interagir com o conteúdo.