Cross-Site Request Forgery (CSRF)
Aprenda como os ataques CSRF forjam requisições autenticadas e como tokens CSRF e cookies SameSite oferecem proteção contra eles.
Cross-Site Request Forgery (CSRF) é uma aula grátis de Cyber Security 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 Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.
O que é CSRF?
Falsificação de solicitação entre sites (CSRF) induz o navegador de um usuário autenticado a fazer solicitações não autorizadas a uma aplicação web. O navegador envia cookies automaticamente com as solicitações, portanto o servidor não consegue distinguir solicitações legítimas de solicitações forjadas sem medidas adicionais.
Como o CSRF funciona
Cenário:
- A vítima está conectada a bank.com (cookie de sessão no navegador)
- A vítima acessa a página do invasor com:
<img src="https://bank.com/transfer?to=attacker&amount=1000"> - O navegador envia a solicitação GET com o cookie de bank.com anexado
- O banco processa a transferência
CSRF com solicitações POST
O CSRF com POST exige um formulário:
<form action="https://bank.com/transfer" method="POST" id="f">
<input name="to" value="attacker">
<input name="amount" value="1000">
</form>
<script>document.getElementById("f").submit()</script>Tokens CSRF
A principal defesa é um token CSRF: um valor aleatório, secreto e específico da sessão (ou da solicitação), incorporado aos formulários. O servidor valida o token em todas as solicitações que alteram o estado. Um invasor em outro domínio não consegue ler o token (política de mesma origem).
Atributo SameSite do cookie
SameSite=Strict: o cookie não é enviado com solicitações entre sites. SameSite=Lax: o cookie é enviado com navegações seguras de nível superior (links), mas não com POST de outros sites. Os navegadores modernos usam Lax por padrão, reduzindo significativamente o risco de CSRF.
Padrão de envio duplo de cookie
Uma alternativa ao armazenamento do token no servidor: defina um cookie CSRF aleatório e exija que ele também seja enviado como parâmetro da solicitação. Um invasor não consegue ler o cookie (mesma origem), portanto não consegue fazer com que ele corresponda ao valor nos dados do formulário.
Cabeçalhos de solicitação personalizados
Para solicitações AJAX, exigir um cabeçalho personalizado (por exemplo, X-Requested-With: XMLHttpRequest) fornece proteção contra CSRF porque os navegadores impedem que scripts entre origens definam cabeçalhos arbitrários (o CORS impõe essa restrição).
Quando os tokens CSRF não são suficientes
Os tokens CSRF falham se:
- Houver XSS — o invasor poderá ler o token por meio de JavaScript
- O token for vazado na URL (cabeçalho Referer)
- O token for previsível ou reutilizado
- O CORS estiver configurado incorretamente para permitir a origem do invasor
Teste de CSRF
Etapas do teste:
- Identifique as solicitações que alteram o estado (POST, PUT, DELETE)
- Remova ou modifique o token CSRF e reenvie a solicitação
- Crie um envio de formulário entre origens e verifique se ele é bem-sucedido
- Verifique o atributo SameSite nos cookies de sessão
CSRF em APIs
As APIs REST que usam JSON geralmente são isentas de CSRF se:
- Exigirem
Content-Type: application/json(os formulários HTML não podem definir esse valor) - Usarem autenticação baseada em token (cabeçalho Authorization, não cookies)
Mas as APIs que aceitam cookies ainda precisam implementar proteção contra CSRF.
Cenário atual do CSRF
Com SameSite=Lax como padrão no Chrome, Firefox e Safari, muitos ataques tradicionais de CSRF são bloqueados. No entanto, ataques a subdomínios e determinados padrões de navegação ainda podem contornar o Lax. Combine SameSite com tokens CSRF para obter uma defesa robusta.
Verificação rápida: CSRF
Qual é a principal defesa contra ataques de CSRF em aplicações web?
Recapitulação da lição
O CSRF explora o envio automático de cookies pelo navegador para forjar solicitações autenticadas a partir de sites maliciosos. Principal defesa: tokens CSRF validados no servidor. Secundária: atributo de cookie SameSite=Strict/Lax. APIs que usam autenticação por token em cabeçalhos (não cookies) são naturalmente resistentes a CSRF. Combine as defesas; o XSS pode contornar tokens CSRF se estiver presente.
Perguntas Frequentes
A aula “Cross-Site Request Forgery (CSRF)” é grátis?
Sim — o texto completo de “Cross-Site Request Forgery (CSRF)” é 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 Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.
O que vou aprender em “Cross-Site Request Forgery (CSRF)”?
Aprenda como os ataques CSRF forjam requisições autenticadas e como tokens CSRF e cookies SameSite oferecem proteção contra eles. Você pratica Cyber Security 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 Cyber Security Academy?
Nenhuma experiência prévia é necessária. Cyber Security 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 “Cross-Site Request Forgery (CSRF)”?
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 Cyber Security Academy?
Sim. Cada aula de Cyber Security 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
- Injeção de SQL: como e por que funciona
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- Configuração incorreta de segurança e serviços expostos