Token CSRF
O que é Token CSRF?
Token CSRFValor imprevisivel por sessao embutido em formularios ou cabecalhos para o servidor confirmar que pedidos que alteram estado vem das suas proprias paginas.
O token CSRF e a defesa canonica contra Cross-Site Request Forgery, o ataque classificado como A05 no OWASP Top 10 2013 e integrado em "Broken Access Control" nas edicoes posteriores. O servidor gera um valor criptograficamente aleatorio, associa-o a sessao do utilizador e inclui-o em formularios HTML ou disponibiliza-o para um header de pedido personalizado. Como a same-origin policy impede a pagina do atacante de ler o token, um pedido cross-site forjado nao consegue fornecer o valor correto e e rejeitado.
Predominam tres padroes. O synchronizer token pattern guarda o valor esperado no servidor — o mais robusto, mas com estado. Os double-submit cookies comparam um cookie com um campo de formulario ou header correspondente, sem necessitar de estado no servidor, mas ficam vulneraveis se um atacante conseguir escrever cookies via subdominio. O double-submit assinado (HMAC) associa o token a sessao para fechar essa lacuna. Os tokens devem ser por sessao (ou por pedido em acoes sensiveis), longos e comparados em tempo constante.
A defesa em profundidade importa: desde o Chrome 80 (fevereiro de 2020) os cookies sem marcacao assumem por omissao SameSite=Lax, o que bloqueia a maioria dos POSTs cross-site, mas o Lax continua a permitir navegacoes GET de nivel superior e nem todos os browsers o aplicam — pelo que os tokens continuam a ser necessarios. Combine-os com validacao de Origin/Referer e CORS estrito. As APIs com bearer token chamadas apenas a partir de JavaScript evitam cookies ambientais e geralmente nao precisam de token CSRF, mas continuam a exigir controlos anti-replay e de autorizacao.
flowchart TD
A[Utilizador carrega formulario] --> B[Servidor emite token CSRF ligado a sessao]
B --> C[Token em campo oculto / header personalizado]
C --> D[Utilizador submete pedido que altera estado]
D --> E{Token corresponde ao valor da sessao?}
E -- Sim --> F[Processar pedido]
E -- Nao / ausente --> G[Rejeitar 403 - pedido forjado]
H[Formulario cross-site do atacante] -. nao consegue ler o token .-> G● Exemplos
- 01
Campo <input type="hidden" name="csrf" value="a8f1..."> num formulario.
- 02
Header X-CSRF-Token validado no servidor contra um segredo de sessao.
● Perguntas frequentes
O que é Token CSRF?
Valor imprevisivel por sessao embutido em formularios ou cabecalhos para o servidor confirmar que pedidos que alteram estado vem das suas proprias paginas. Pertence à categoria Identidade e acesso da cibersegurança.
O que significa Token CSRF?
Valor imprevisivel por sessao embutido em formularios ou cabecalhos para o servidor confirmar que pedidos que alteram estado vem das suas proprias paginas.
Como se defender contra Token CSRF?
As defesas contra Token CSRF costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.