FlawOpen

flawopen.com/CSRF/Requisições GET

Token CSRF em GET: quando é necessário?

Página de referência
Resposta curta

Se GET apenas consulta dados, não deve alterar o estado do servidor e normalmente não precisa de token CSRF. Navegadores, crawlers, prévias e recursos incorporados podem disparar GET sem clique intencional. Portanto, use um método inseguro para ações como excluir ou comprar e proteja mudanças autenticadas por cookie contra CSRF. Um GET legado que altera estado continua vulnerável e precisa de defesa temporária durante a migração.

Por que GET deve continuar sendo seguro

A RFC 9110 define GET como seguro: o cliente não solicita uma mudança de estado. Seguro não significa que o servidor não tenha efeitos incidentais, como registrar logs. GET também é idempotente, mas são propriedades diferentes. Navegadores, prefetchers, crawlers e prévias de links podem enviar requisições seguras sem ação deliberada do usuário. Um <img src="..."> em outro site também pode fazer o navegador enviar um GET com os cookies do usuário. Se o endpoint excluir um item ou alterar configurações, viola a semântica de GET e pode ser acionado por conteúdo comum da página.

Aplique proteção CSRF a requisições que alteram estado

Token CSRF em GET: perguntas comuns

E se o código legado tiver um endpoint GET que altera estado?

Trate-o como vulnerável. Exija temporariamente uma defesa CSRF validada no servidor (por exemplo, token sincronizador junto com verificações de Origin ou Fetch Metadata quando disponíveis), audite cache e referers e migre a ação para POST, PUT, PATCH ou DELETE. Evite tokens na query string: URLs podem aparecer no histórico, em logs e em dados de referer. A verificação de token é uma ponte até o endpoint respeitar a semântica de métodos seguros.

Referências

Veja também Cross-Site Request Forgery (CSRF, CWE-352): como funciona e como evitar — flawopen.com JWT no localStorage vs. cookies HttpOnly: o que é mais seguro? — flawopen.com Next.js Server Actions CSRF: Origin e configuração segura SameSite=Strict substitui tokens CSRF?