Content Security Policy (CSP) é uma camada extra de segurança que ajuda a detectar e mitigar certos tipos de ataques, incluindo Cross Site Scripting (XSS) e ataques de injeção de dados. Esses ataques são usados para tudo, desde roubo de dados até defacement ou distribuição de malware.
A CSP é projetada para ser totalmente retrocompatível; navegadores que não a suportam ainda funcionam com servidores que a implementam e vice-versa. Navegadores que não suportam a CSP simplesmente a ignoram, adotando a política same-origin para conteúdo web. Se o site não oferece o cabeçalho CSP, os navegadores também usam a política padrão same-origin.
Habilitar a CSP é tão fácil quanto configurar seu servidor web para devolver o cabeçalho HTTP X-Content-Security-Policy
. Veja Usando a Content Security Policy para detalhes sobre como configurar e habilitar a CSP.
<meta>
pode ser usada para configurar uma política, mas esse comportamento ainda não é suportado no Firefox. Suporte a esta funcionalidade está sendo adicionada no bug 663570.Mitigando o cross site scripting
O principal objetivo da CSP é mitigar e reportar ataques XSS. Ataques XSS exploram a credibilidade do navegador no conteúdo recebido do servidor. Scripts maliciosos são executados pelo navegador da vítima porque o navegador confia na fonte do conteúdo, mesmo quando este não vem de onde parece vir.
A CSP torna possível para os administradores de servidores reduzir ou eliminar os vetores pelos quais ataques XSS podem ocorrer. Isso é feito pela especificação dos domínios que o navegador deve considerar como fontes válidas de scripts executáveis. Um navegador compatível com a CSP somente executará scripts carregados em arquivos recebidos dos domínios especificados, ignorando quaisquer outros scripts (incluindo scripts inline e atributos de eventos no HTML).
Como uma forma máxima de proteção, sites que nunca permitirão a execução de scripts podem optar por desabilitar a execução de scripts de forma global.
Mitigando ataques de packet sniffing
Além de restringir os domínios dos quais conteúdo pode ser carregado, o servidor pode especificar quais protocolos podem ser usados; por exemplo (e, idealmente, de um ponto de vista de segurança), um servidor pode especificar que todo o conteúdo deve ser carregado usando HTTPS.
Veja também
Especificação