0Pricing
PHP Academy · Aula

Proteção contra CSRF

Gere e valide tokens CSRF em formulários para evitar solicitações forjadas.

Proteção contra CSRF é uma aula grátis de PHP 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 PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

O que é CSRF?

Falsificação de solicitação entre sites (CSRF) induz usuários autenticados a enviar ações indesejadas. Uma página maliciosa envia uma solicitação forjada ao seu site usando a sessão ativa da vítima.

Como o CSRF funciona

Cenário: Alice está conectada a bank.com. Ela acessa malicious.com, que contém um formulário oculto que envia automaticamente uma solicitação de transferência para bank.com usando o cookie de sessão dela.

Tokens CSRF

A defesa consiste em um token secreto específico para cada sessão, inserido em todos os formulários. O servidor valida o token nas solicitações POST/PUT/PATCH/DELETE; uma solicitação forjada de outra origem não consegue ler o token.

@csrf no Laravel Blade

Adicione a diretiva @csrf a todos os formulários HTML que modificam dados.

<form method="POST" action="/transfer">
    @csrf
    <input name="amount" type="number">
    <button>Transfer</button>
</form>

Componente intermediário de CSRF

O componente intermediário VerifyCsrfToken do Laravel verifica o cabeçalho X-CSRF-TOKEN ou o campo _token em todas as solicitações que não sejam GET no grupo de componentes intermediários web.

CSRF para AJAX

Para solicitações AJAX, leia o token da metatag e envie-o como um cabeçalho.

// In the HTML head:
<meta name="csrf-token" content="{{ csrf_token() }}">

// In JavaScript (Axios):
axios.defaults.headers.common["X-CSRF-TOKEN"] =
    document.querySelector("meta[name=csrf-token]").content;

Exclusão de rotas

As rotas de API (que usam tokens do Sanctum) geralmente são excluídas da proteção contra CSRF porque usam autenticação baseada em tokens em vez de cookies.

<?php
// In VerifyCsrfToken $except:
protected $except = [
    "api/*",
    "webhooks/*",
];

Atributo de cookie SameSite

Definir SameSite=Strict ou Lax no cookie de sessão fornece uma camada adicional de defesa contra CSRF nos navegadores modernos.

Padrão de envio duplo de cookie

Uma defesa alternativa contra CSRF para APIs: envie o token tanto como cookie quanto como cabeçalho da solicitação. O servidor verifica se eles correspondem; solicitações de outra origem não conseguem ler os cookies.

CSRF em contextos de API

APIs REST que se autenticam com tokens Bearer (Sanctum, JWT) não são vulneráveis a CSRF porque os tokens são armazenados em localStorage (não são enviados automaticamente pelo navegador).

Teste de CSRF

Os auxiliares de teste do Laravel incluem automaticamente tokens CSRF. Também é possível testar se solicitações POST não protegidas são rejeitadas.

<?php
// With token:
$this->post("/transfer", ["_token" => csrf_token(), "amount" => 100]);
// Simulating CSRF attack (no token):
$this->withoutMiddleware(VerifyCsrfToken::class)->post("/transfer", [...]);

Resumo

A proteção contra CSRF exige um token oculto em todos os formulários que alteram o estado. O Laravel gerencia isso automaticamente com @csrf. Para AJAX, adicione o token como um cabeçalho HTTP. As rotas de API que usam tokens Bearer não são afetadas.

Verificação rápida

Como adicionar proteção contra CSRF a um formulário do Laravel Blade?

Perguntas Frequentes

A aula “Proteção contra CSRF” é grátis?

Sim — o texto completo de “Proteção contra 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 PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Proteção contra CSRF”?

Gere e valide tokens CSRF em formulários para evitar solicitações forjadas. Você pratica PHP 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 PHP Academy?

Nenhuma experiência prévia é necessária. PHP 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 “Proteção contra 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 PHP Academy?

Sim. Cada aula de PHP 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

  1. Prevenção de Cross-Site Scripting (XSS)
  2. Injeção de SQL e consultas parametrizadas
  3. Proteção contra CSRF
  4. Armazenamento seguro de senhas
← Voltar para PHP Academy