Como Corrigir o Erro ‘CSRF Token Mismatch’ no Mastodon ao Enviar Formulários
🔍 WiseChecker

Como Corrigir o Erro ‘CSRF Token Mismatch’ no Mastodon ao Enviar Formulários

Ao enviar um formulário no Mastodon, como fazer login, publicar um status ou alterar configurações, você pode ver o erro CSRF Token Mismatch. Esse erro significa que o token de segurança que verifica sua sessão no navegador não correspondeu ao que o servidor esperava. A causa geralmente é um cookie de sessão desatualizado ou ausente, uma extensão do navegador que bloqueia ou modifica requisições, ou um proxy reverso mal configurado que remove o token. Este artigo explica por que ocorre a incompatibilidade e fornece correções passo a passo para os cenários mais comuns.

Principais Conclusões: Corrigindo o Erro CSRF Token Mismatch no Mastodon

  • Limpe os cookies e o cache do navegador: Remove dados de sessão desatualizados que causam incompatibilidade de token ao enviar formulários.
  • Desative extensões do navegador: Extensões que bloqueiam ou modificam cookies podem impedir que o token CSRF seja enviado corretamente.
  • Verifique a configuração do proxy reverso (instâncias auto-hospedadas): Certifique-se de que o Nginx ou Apache não remova ou altere o cookie _csrf_token.

ADVERTISEMENT

Por que o Mastodon Exibe o Erro CSRF Token Mismatch

A proteção contra Cross-Site Request Forgery (CSRF) é um recurso de segurança integrado ao Mastodon. Cada formulário inclui um token oculto que o servidor gera e armazena em um cookie de sessão. Quando você envia o formulário, o navegador envia tanto o token quanto o cookie. O servidor os compara. Se não corresponderem, o Mastodon rejeita a requisição com o erro CSRF Token Mismatch.

A incompatibilidade ocorre em três cenários principais:

  • Sessão desatualizada: Seu navegador ainda tem um cookie de sessão antigo de uma visita anterior, mas o servidor regenerou o token. Isso geralmente acontece após uma reinicialização do servidor ou um longo período de inatividade.
  • Interferência de terceiros: Extensões do navegador que bloqueiam cookies, modificam cabeçalhos ou limpam dados de sessão podem remover o cookie CSRF antes do envio do formulário.
  • Configuração incorreta do proxy reverso: Se você executa uma instância auto-hospedada do Mastodon atrás do Nginx ou Apache, o proxy pode remover ou reescrever o cookie _csrf_token, impedindo a validação pelo servidor.

Passos para Limpar a Sessão do Navegador e Corrigir o Erro

A correção mais rápida é limpar o cookie de sessão da sua instância do Mastodon. Isso força o navegador a solicitar um novo token CSRF.

  1. Abra as ferramentas do desenvolvedor do seu navegador.
    Pressione F12 (Windows) ou Cmd+Option+I (Mac) para abrir o DevTools. Clique na aba Application (Chrome/Edge) ou Storage (Firefox).
  2. Localize os cookies da sua instância do Mastodon.
    Na barra lateral esquerda, expanda Cookies e selecione o domínio da sua instância do Mastodon (por exemplo, mastodon.social).
  3. Exclua o cookie de sessão.
    Encontre o cookie chamado _mastodon_session ou _csrf_token. Clique com o botão direito e escolha Delete. Se não tiver certeza de qual cookie remover, exclua todos os cookies desse domínio.
  4. Recarregue a página do Mastodon.
    Pressione Ctrl+R (Windows) ou Cmd+R (Mac) para atualizar. O navegador solicitará uma nova sessão e um novo token CSRF. Tente enviar o formulário novamente.

Se Limpar Cookies Não Funcionar: Limpe o Cache Completo do Navegador

Às vezes, ativos de página em cache podem interferir no envio do formulário. Limpe o cache completo da sua instância do Mastodon.

  1. Abra a caixa de diálogo de limpeza de dados de navegação do seu navegador.
    Pressione Ctrl+Shift+Delete (Windows) ou Cmd+Shift+Delete (Mac).
  2. Selecione um intervalo de tempo.
    Escolha Todo o período para garantir que nenhum dado desatualizado permaneça.
  3. Marque as caixas para Cookies e Imagens e arquivos em cache.
    Desmarque outros itens, como senhas ou dados de preenchimento automático, a menos que queira limpá-los também.
  4. Clique em Limpar dados.
    Recarregue o Mastodon e teste o formulário novamente.

ADVERTISEMENT

Se o Erro Persistir: Desative as Extensões do Navegador

Extensões que gerenciam cookies, bloqueiam rastreadores ou impõem configurações de privacidade rigorosas podem remover ou alterar o cookie CSRF. Teste com as extensões desativadas.

  1. Abra a página de gerenciamento de extensões do seu navegador.
    No Chrome, digite chrome://extensions na barra de endereços. No Firefox, digite about:addons. No Edge, digite edge://extensions.
  2. Desative todas as extensões.
    Desative cada extensão. Alternativamente, use um perfil do navegador sem extensões instaladas.
  3. Reinicie o navegador e teste o Mastodon.
    Abra o Mastodon na mesma janela e envie o formulário que falhou anteriormente. Se o erro desaparecer, reative as extensões uma a uma para identificar a culpada.

Extensões Comuns que Causam CSRF Token Mismatch

  • Privacy Badger ou uBlock Origin em modo estrito: Podem bloquear o cookie definido pelo Mastodon.
  • Cookie Auto-Delete ou Self-Destructing Cookies: Limpam cookies de sessão muito cedo, antes do envio do formulário.
  • NoScript ou ScriptSafe: Podem bloquear o JavaScript que gera o token CSRF.

Correção para Instâncias Auto-Hospedadas do Mastodon: Verifique a Configuração do Proxy Reverso

Se você executa sua própria instância do Mastodon atrás de um proxy reverso como Nginx ou Apache, o proxy pode remover ou alterar o cookie _csrf_token. Esta é a causa mais comum para administradores de servidores.

Correção na Configuração do Nginx

Certifique-se de que sua configuração do Nginx não substitua o cabeçalho Set-Cookie. Adicione ou verifique estas linhas dentro do bloco location /:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cookie_path / "/; Secure; HttpOnly";

A diretiva proxy_cookie_path não deve remover o cookie _csrf_token. Se você usar um caminho personalizado, certifique-se de que o domínio do cookie corresponda exatamente ao domínio da sua instância do Mastodon.

Correção na Configuração do Apache

No seu host virtual do Apache, habilite os módulos mod_proxy e mod_proxy_http. Adicione esta diretiva para preservar os cookies:

ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost On
Header always edit Set-Cookie ^(.)$ $1;Secure;HttpOnly

Não use Header unset Set-Cookie ou RequestHeader unset Cookie em nenhum lugar da sua configuração. Esses comandos removem o token CSRF.

ADVERTISEMENT

Se o Mastodon Ainda Mostrar o Erro CSRF Após Todas as Correções

Erro Persiste em uma Janela Privada ou Anônima

Se o erro ocorrer em uma janela privada, o navegador pode ter o bloqueio de cookies de terceiros ativado por padrão. No Chrome, vá em Configurações > Privacidade e segurança > Cookies de terceiros e defina como Permitir todos os cookies para o domínio do Mastodon. No Firefox, verifique Configurações > Privacidade e Segurança > Proteção contra rastreamento aprimorada e adicione sua instância do Mastodon à lista de exceções.

Erro Ocorre Apenas em um Formulário Específico

Se apenas um formulário, como o de login, falhar enquanto outros funcionam, o formulário pode estar em cache. Abra a página do formulário com uma atualização forçada: pressione Ctrl+F5 (Windows) ou Cmd+Shift+R (Mac). Se o erro continuar, verifique o console do navegador em busca de erros JavaScript que possam impedir a injeção do token CSRF no formulário.

Erro Aparece Após uma Atualização do Servidor Mastodon

Após uma atualização, o servidor pode ter alterado o nome do cookie ou o método de geração do token. Limpe todos os cookies do domínio do Mastodon e reinicie o navegador. Se o erro persistir, entre em contato com o administrador da instância ou, para instâncias auto-hospedadas, revise o changelog do Mastodon em busca de alterações relacionadas ao CSRF.

Item Limpar Sessão do Navegador Desativar Extensões Correção no Proxy Reverso
Descrição Exclui cookies desatualizados e arquivos em cache que causam incompatibilidade de token Remove ferramentas de terceiros que bloqueiam ou alteram o cookie CSRF Corrige configurações do Nginx ou Apache que removem o cookie CSRF
Melhor para Todos os usuários, especialmente após reinicialização do servidor ou período de inatividade Usuários com extensões de privacidade ou gerenciamento de cookies Administradores de instâncias auto-hospedadas
Tempo para aplicar 1-2 minutos 2-5 minutos 10-30 minutos
Requer Apenas acesso ao navegador Gerenciamento de extensões do navegador Acesso SSH ao servidor e edição de arquivos de configuração

O erro CSRF Token Mismatch no Mastodon é quase sempre um problema de sessão ou cookie. Comece limpando os cookies e o cache do navegador. Se isso não funcionar, desative as extensões do navegador e teste novamente. Para proprietários de instâncias auto-hospedadas, verifique se o proxy reverso não está removendo o cookie _csrf_token. Após aplicar a correção adequada, o formulário deve ser enviado sem erros. Como medida preventiva, considere adicionar sua instância do Mastodon à lista de exceções de cookies do navegador para evitar futuras incompatibilidades de token.

ADVERTISEMENT