Um Token que Você Pode Ler: Por Que um Token do Navegador Não é uma Caixa Secreta
O desafio
Apps web costumam entregar ao seu navegador um token longo para lembrar quem você é. Parece um embaralhado aleatório, mas a parte do meio não é escrita secreta - é apenas um código reversível que qualquer um pode transformar de volta em texto comum. A bancada desembaralha para você. Leia e envie o nome de usuário que ele carrega.
O que você vai aprender
- Entender que a parte do meio de um token do navegador é um código reversível, não um segredo
- Transformar um segmento codificado do token de volta em texto legível
- Encontrar e ler o nome de usuário dentro de um token decodificado
- Explicar por que senhas e detalhes privados nunca devem ser escondidos nesse tipo de token
- Reconhecer que qualquer pessoa com uma cópia do token pode ler seu conteúdo
Habilidades testadas
Pré-requisitos
- Aplicativos dão ao seu navegador um token para lembrar quem você é
- Alguns códigos de texto são reversíveis para texto comum
Como funciona
Quando você faz login em um site, ele costuma entregar ao seu navegador um token longo para carregar a cada visita, para que o site lembre quem você é. Esse token vem em três partes separadas por pontos. A parte do meio guarda detalhes sobre você e, à primeira vista, parece um embaralhado sem sentido de letras e números.
O importante a aprender é que esse embaralhado não é uma mensagem secreta trancada com uma chave. Ele é escrito em um código reversível, uma forma comum de empacotar texto para que ele viaje com segurança. Transformá-lo de volta em texto comum não exige senha nem nenhum truque especial: a bancada faz isso em uma única etapa e mostra {"user":"guest42","role":"guest"}. Assim, o nome de usuário dentro dele é guest42, e ele nunca esteve realmente escondido.
Essa é toda a lição: um token como esse pode ser lido por qualquer pessoa que tenha uma cópia dele. Não há problema em ele carregar seu nome de usuário ou sua função, porque esses não são segredos. Mas um segredo de verdade, como uma senha, nunca deve ser colocado dentro de um token assim, porque ficaria simplesmente exposto à vista de todos.
Erros comuns
- Achar que o token é um segredo trancado. A parte do meio é um código reversível, não uma mensagem protegida por senha; nenhuma chave é necessária.
- Tentar quebrar ou adivinhar. Não há nada para quebrar: a bancada transforma o token diretamente em texto comum.
- Ler o campo errado. A resposta é o valor de
user, não derole. - Mudar a forma como você digita a resposta. Envie o nome de usuário exatamente como mostrado:
guest42.
Como se proteger
Como qualquer pessoa com uma cópia do token pode lê-lo, quem constrói o sistema deve manter apenas detalhes não secretos dentro dele.
- Nunca coloque uma senha ou outro segredo privado dentro de um token que o navegador guarda.
- Mantenha apenas o que é seguro ser visto, como um nome de usuário ou uma função, e busque qualquer dado sensível no servidor.
- Faça os tokens expirarem depois de um tempo, para que uma cópia antiga pare de funcionar.
- Envie e armazene os tokens com cuidado, para que sejam mais difíceis de roubar desde o início.