Gerador de Content Security Policy (CSP)
Monte uma Content-Security-Policy diretiva por diretiva, exporte como cabeçalho, meta tag, configuração Nginx ou Apache e receba avisos sobre configurações inseguras.
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests">
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests" always;
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests"
Importar uma política existente
O que é Gerador de CSP?
Este gerador de CSP ajuda a escrever uma Content-Security-Policy que restringe de onde scripts, estilos, imagens, frames e outros recursos podem ser carregados. Ele parte de uma política rigorosa, permite editar cada diretiva e avalia o resultado ao vivo, avisando sobre fraquezas como 'unsafe-inline', fontes de script com curinga, object-src ou base-uri ausentes e palavras-chave sem aspas. Você também pode importar uma política existente.
Como usar Gerador de CSP
- Comece pela Política inicial rigorosa ou por Limpar tudo.
- Edite as fontes de cada diretiva, por exemplo
'self' https://cdn.example.com. - Ative ou desative upgrade-insecure-requests e acrescente um report-uri, se precisar.
- Leia a avaliação da política e corrija as constatações de prioridade alta e média.
- Copie a política como cabeçalho HTTP, meta tag, linha de Nginx ou de Apache; ou importe uma política existente para analisá-la.
Exemplo
Strict starter policy
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
Quando usar Gerador de CSP
Use para rascunhar ou revisar uma CSP antes de implantá-la. Implante novas políticas primeiro com Content-Security-Policy-Report-Only e acompanhe as violações, porque uma política rigorosa vai quebrar scripts inline e widgets de terceiros que você esqueceu de permitir. As verificações são estáticas e não conseguem ver quais scripts as suas páginas realmente carregam.
Como funciona Gerador de CSP
As diretivas são serializadas em uma ordem fixa como name source source; …, ignorando as vazias. A avaliação aplica regras estáticas parecidas com as do CSP Evaluator do Google: palavras-chave como self ou none precisam estar entre aspas; script-src (ou default-src como alternativa) sem nonce/hash contendo 'unsafe-inline', 'unsafe-eval', *, http:, https: ou data: é sinalizado; object-src deve ser 'none'; base-uri, frame-ancestors e form-action devem estar definidos. A versão em meta tag omite frame-ancestors, report-uri, report-to e sandbox, que os navegadores ignoram em meta tags.
Casos de Uso Comuns
- Criar uma primeira CSP rigorosa para um site novo.
- Auditar uma política copiada da produção em busca de 'unsafe-inline' e curingas.
- Acrescentar corretamente um host de analytics ou de CDN ao script-src.
- Obter a linha add_header exata do Nginx para uma política.
Perguntas Frequentes
Por que o 'unsafe-inline' é um problema?
Ele permite qualquer script inline, inclusive um injetado por uma falha de XSS, o que anula o principal objetivo da CSP. Use nonces ou hashes.
Cabeçalho ou meta tag?
Prefira o cabeçalho HTTP. Uma meta tag não pode usar frame-ancestors, report-uri ou sandbox, e só se aplica ao conteúdo que vem depois dela.
Como testo sem quebrar o meu site?
Envie a mesma política como Content-Security-Policy-Report-Only; os navegadores informam as violações no console sem bloquear nada.