flawopen.com/CSRF/Requisições GET
Token CSRF em GET: quando é necessário?
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
- ✓Mantenha GET, HEAD e OPTIONS sem mudanças de estado solicitadas; use POST, PUT, PATCH ou DELETE para mutações
- ✓Proteja métodos inseguros autenticados por cookie com a defesa CSRF do framework ou um token validado; use SameSite e verificações de Origin/Fetch Metadata como camadas extras
- ✓Trate todo GET que altera estado como erro de semântica HTTP; adicione uma defesa CSRF temporária, se necessário, migre a ação e remova segredos de URLs
Token CSRF em GET: perguntas comuns
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.