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