O que é a assinatura de cookies?

A assinatura de cookies é uma técnica de segurança que adiciona uma assinatura criptográfica aos valores dos cookies, garantindo sua integridade e autenticidade. Quando um servidor envia um cookie para um navegador, ele anexa um código de autenticação de mensagem baseado em hash (HMAC) ao valor do cookie. Essa assinatura é criada usando uma chave secreta conhecida apenas pelo servidor. Quando o navegador envia o cookie de volta, o servidor pode verificar a assinatura para confirmar que o cookie não foi adulterado.

Como funciona a assinatura HMAC-SHA1?

O HMAC (Código de Autenticação de Mensagem Baseado em Hash) combina uma função de hash criptográfica com uma chave secreta para produzir uma assinatura única. Para a assinatura de cookies, o processo funciona da seguinte forma:

  1. Assinatura: O valor original do cookie é combinado com uma chave secreta usando o algoritmo HMAC-SHA1, produzindo uma assinatura. O formato final do cookie assinado é valor.assinatura, onde a assinatura é codificada em base64url.

  2. Verificação: Ao receber um cookie assinado, o servidor extrai o valor original e a assinatura, recalcula a assinatura esperada usando a mesma chave secreta e as compara usando uma comparação resistente a ataques de tempo para evitar ataques de tempo.

Por que usar cookies assinados?

Cookies não assinados podem ser facilmente modificados por usuários ou scripts mal-intencionados. Um usuário poderia alterar seu ID de sessão, função de usuário ou outros dados sensíveis armazenados em cookies. Cookies assinados impedem isso, pois qualquer modificação se torna detectável - se o valor mudar, a assinatura se torna inválida.

Descrição da ferramenta

Esta ferramenta permite assinar e desassinar valores de cookies usando assinaturas HMAC-SHA1, compatível com o formato do pacote npm cookie-signature. Digite o valor do seu cookie e a chave secreta para gerar um cookie assinado, ou cole um cookie assinado para extrair e verificar seu valor original.

Exemplos

Assinando um cookie:

Entrada (Não assinado) Chave Secreta Saída (Assinado)
user123 minha-chave-secreta user123.SNk0sCiCAuZ5cwj0lNdJfUgwqU4
session_abc segredo-do-app session_abc.sBzU4FZRe3BfgNWZQB4viGTH37A

Desassinando um cookie:

Entrada (Assinado) Chave Secreta Saída (Não assinado)
test.sOx9vuKRxxXdUOK0uLcAQ4CIORo senha test

Detecção de assinatura inválida:

Se você tentar desassinar um cookie com a chave secreta errada ou um valor adulterado, a ferramenta exibirá um erro de "Assinatura inválida".

Recursos

  • Assinar cookies com HMAC-SHA1 usando qualquer chave secreta
  • Desassinar e verificar cookies assinados para extrair os valores originais
  • Comparação resistente a ataques de tempo para evitar ataques de tempo durante a verificação
  • Formato compatível com o pacote Node.js cookie-signature
  • Processamento baseado no navegador usando a Web Crypto API - nenhum dado enviado para servidores

Casos de uso

  • Testar sessões do Express.js: Verifique se os cookies de sessão do Express estão devidamente assinados e podem ser decodificados com sua chave secreta
  • Depurar problemas de autenticação: Extraia o valor original de cookies assinados para solucionar problemas de login ou sessão
  • Auditoria de segurança: Verifique se as assinaturas de cookies estão funcionando corretamente em seu aplicativo web
  • Aprendizado de criptografia: Entenda como funciona a assinatura de cookies baseada em HMAC na prática
  • Teste de migração: Garanta a compatibilidade de cookies ao alterar chaves secretas ou migrar entre estruturas