Leia a Claim do JWT: Decodificando um Token Retirado do Armazenamento do App

Segurança Mobile Nível 2/4 ~3 min 30 de julho de 2026

O desafio

Você tirou este token do armazenamento local de um app móvel. Parece um amontoado aleatório, mas o payload de um JWT não é criptografado - é apenas base64, que qualquer um pode decodificar. Na bancada, o payload está disposto para você. Leia-o e envie o endereço de e-mail que ele carrega.

O que você vai aprender

  • Entender que o payload de um JWT é codificado em base64, não criptografado
  • Decodificar o payload de um JWT para ler suas claims sem chave ou quebra
  • Identificar e extrair a claim de e-mail de um token
  • Explicar por que segredos e dados pessoais nunca devem ser armazenados no payload de um JWT
  • Reconhecer que tokens no armazenamento do cliente podem ser lidos por qualquer um com acesso

Habilidades testadas

Decodificação de JWTAnálise de Base64Identificação de dados sensíveis

Pré-requisitos

  • Um JWT é composto por três partes em base64url separadas por pontos
  • Base64 é uma codificação reversível, não criptografia

Como funciona

Um JSON Web Token é composto por três segmentos em base64url unidos por pontos: header, payload e signature. O ponto crucial é que o payload é codificado, não criptografado. Base64 é uma representação reversível criada para tornar dados binários seguros de transportar como texto; revertê-la não exige chave nem esforço algum. Por isso, o segmento do meio, que parece aleatório, é totalmente legível para qualquer um que tenha o token.

Ao decodificar o payload aqui, você obtém {"sub":"9f2","email":"[email protected]","plan":"pro"}. O e-mail e o plano nunca estiveram escondidos, eles só foram codificados. A assinatura no final protege a integridade (impede que as claims sejam alteradas sem detecção), mas não oferece nenhuma confidencialidade.

Isso importa mais ainda no lado cliente. Um token guardado no armazenamento local de um app móvel, em um navegador, ou capturado na rede pode ser decodificado por qualquer um que tenha acesso a ele. Trate cada claim de um JWT como pública. Se você precisa carregar um segredo de verdade, criptografe-o separadamente ou mantenha-o no servidor - nunca presuma que o próprio JWT esconde algo.

Erros comuns

  • Presumir que o token está criptografado. É base64, não texto cifrado - nenhuma chave está envolvida, então não tente quebrá-lo.
  • Tentar forçar a assinatura por brute force. Você não precisa da assinatura para ler as claims; o payload se decodifica sozinho.
  • Ler a claim errada. A resposta é o valor de email, não o id de sub nem o plan.
  • Reformatar a resposta. Envie o e-mail exatamente como aparece: [email protected].

Como se proteger

Como cada claim de um JWT pode ser lida, projete os tokens para carregar apenas dados não sensíveis e proteja os segredos em outro lugar.

  • Nunca coloque senhas, chaves de API, dados pessoais completos ou segredos de sessão dentro do payload de um JWT.
  • Carregue apenas o mínimo necessário para autorização (um id de usuário opaco, escopos) e busque o restante no servidor.
  • Se um payload realmente precisar ser confidencial, use um token criptografado (JWE), não um JWT assinado comum.
  • Armazene os tokens com cuidado no cliente e mantenha-os de curta duração, para que um token vazado tenha valor limitado.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

113 resoluções
82% taxa de sucesso
M2F14M3 Primeiro sangue

Hacks de hoje relacionados

25.000+ Hackers 100+ Labs & Cursos Grátis
Comece Grátis