Política de segurança de conteúdo para aplicações React
Configure um cabeçalho CSP rigoroso que impeça scripts embutidos e recursos externos não autorizados nas aplicações React.
Política de segurança de conteúdo para aplicações React é uma aula grátis de React Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
O que é a Política de Segurança de Conteúdo
A Política de Segurança de Conteúdo (CSP) é um cabeçalho de resposta HTTP que informa ao navegador quais fontes de conteúdo são confiáveis. Ao declarar exatamente quais scripts, estilos, imagens e fontes podem ser carregados, a CSP impede que conteúdo malicioso injetado seja executado — mesmo que uma vulnerabilidade XSS permita ao invasor injetar HTML na página.
default-src e script-src
default-src 'self' define a base: todos os tipos de recurso (scripts, estilos, imagens, fontes e quadros) só podem ser carregados da mesma origem. script-src 'self' restringe o carregamento de scripts à mesma origem, bloqueando scripts de CDN externas, a menos que sejam listadas explicitamente. Juntas, essas duas diretivas formam a base de uma CSP restritiva.
Por que bloquear eval é importante
eval() converte uma cadeia de caracteres em código executável durante a execução — exatamente o que as cargas XSS precisam. Uma CSP com script-src 'self' (sem 'unsafe-eval') bloqueia eval() e funções relacionadas, como new Function() e setTimeout(string). Isso elimina uma classe importante de execução de cargas XSS.
strict-dynamic para cadeias de scripts
'strict-dynamic' em script-src concede confiança aos scripts carregados por scripts que já são confiáveis. Isso permite os padrões de carregamento dinâmico de scripts usados por ferramentas de empacotamento, sem exigir que você autorize o endereço de cada CDN. Um script confiável pode carregar scripts adicionais, que herdam essa confiança.
CSP baseada em hash para scripts inline
Se a sua aplicação precisar de um script inline específico (como um trecho de inicialização de análise), você poderá calcular seu hash SHA-256 e adicionar 'sha256-base64hash' a script-src. Somente scripts que correspondam exatamente a esse hash poderão ser executados inline. Qualquer script injetado por um invasor terá um hash diferente e será bloqueado.
CSP baseada em nonce
Um nonce é um valor aleatório gerado criptograficamente pelo servidor para cada solicitação. O servidor adiciona o nonce tanto à tag de script (<script nonce="abc123">) quanto ao cabeçalho da CSP (script-src 'nonce-abc123'). Somente scripts que contenham o nonce correto são executados. Os invasores não conseguem prever o nonce e, portanto, não podem usá-lo nos scripts injetados.
Relatórios da CSP
A CSP permite relatar violações por meio de report-uri /csp-violation-endpoint ou da diretiva mais recente report-to. Quando o navegador bloqueia um recurso por causa da CSP, ele envia um relatório JSON ao endpoint. Monitorar esses relatórios ajuda a identificar tanto problemas legítimos de configuração quanto tentativas ativas de ataque.
Implementando CSP no Next.js
No Next.js, adicione cabeçalhos de CSP ao middleware: crie middleware.ts, gere um nonce, defina o cabeçalho Content-Security-Policy e passe o nonce à página por meio de um cabeçalho de resposta. O layout da página lê o nonce do cabeçalho e o aplica a todos os scripts inline e às tags de estilo.
Testando a CSP sem bloquear
Content-Security-Policy-Report-Only é o modo de teste: o navegador não aplica nenhum bloqueio, mas envia relatórios de violação para tudo que teria sido bloqueado. Implante primeiro no modo Report-Only, corrija todas as violações e depois mude para o cabeçalho Content-Security-Policy, que aplica os bloqueios, para evitar interromper a aplicação.
Violações no console do Chrome DevTools
Quando a CSP bloqueia um recurso, o console do Chrome DevTools exibe uma mensagem de erro vermelha que identifica a URL bloqueada e a diretiva violada. Essas mensagens são inestimáveis durante o desenvolvimento e os testes. Cada violação precisa ser resolvida corrigindo a política, movendo o recurso para uma fonte permitida ou usando um nonce ou hash.
CSP prática para uma SPA React
Uma CSP prática para uma SPA React: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-NONCE'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://api.yourdomain.com; frame-ancestors 'none'. A diretiva frame-ancestors 'none' também impede o sequestro de cliques, bloqueando a incorporação da sua aplicação em quadros.
CSP: script-src self
O que script-src 'self' em uma Política de Segurança de Conteúdo impede?
Recapitulação da lição
A CSP é um cabeçalho HTTP que declara fontes de conteúdo confiáveis. default-src 'self' e script-src 'self' bloqueiam scripts externos e eval. Scripts inline podem ser permitidos por meio de hashes ou nonces. 'strict-dynamic' permite o carregamento dinâmico de scripts. Use Content-Security-Policy-Report-Only para testar antes de aplicar os bloqueios. O Next.js implementa a CSP por meio do middleware. O console do DevTools mostra as violações em tempo real.
Perguntas Frequentes
A aula “Política de segurança de conteúdo para aplicações React” é grátis?
Sim — o texto completo de “Política de segurança de conteúdo para aplicações React” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Política de segurança de conteúdo para aplicações React”?
Configure um cabeçalho CSP rigoroso que impeça scripts embutidos e recursos externos não autorizados nas aplicações React. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Política de segurança de conteúdo para aplicações React”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- XSS no React: dangerouslySetInnerHTML e scripts de terceiros
- Proteção contra CSRF em configurações de React e API
- Política de segurança de conteúdo para aplicações React
- Gerenciamento de segredos e variáveis de ambiente