Cos'è la firma dei cookie?

La firma dei cookie è una tecnica di sicurezza che aggiunge una firma crittografica ai valori dei cookie, garantendone l'integrità e l'autenticità. Quando un server invia un cookie a un browser, aggiunge un codice di autenticazione del messaggio basato su hash (HMAC) al valore del cookie. Questa firma viene creata utilizzando una chiave segreta nota solo al server. Quando il browser invia nuovamente il cookie, il server può verificare la firma per confermare che il cookie non sia stato manomesso.

Come funziona la firma HMAC-SHA1?

HMAC (Hash-based Message Authentication Code) combina una funzione hash crittografica con una chiave segreta per produrre una firma univoca. Per la firma dei cookie, il processo funziona come segue:

  1. Firma: Il valore originale del cookie viene combinato con una chiave segreta utilizzando l'algoritmo HMAC-SHA1, producendo una firma. Il formato finale del cookie firmato è valore.firma, dove la firma è codificata in base64url.

  2. Verifica: Quando si riceve un cookie firmato, il server estrae il valore originale e la firma, ricalcola la firma prevista utilizzando la stessa chiave segreta e le confronta utilizzando un confronto a prova di attacchi di timing per prevenire attacchi di timing.

Perché utilizzare cookie firmati?

I cookie non firmati possono essere facilmente modificati dagli utenti o da script dannosi. Un utente potrebbe modificare il proprio ID di sessione, il ruolo utente o altri dati sensibili memorizzati nei cookie. I cookie firmati impediscono questo rendendo rilevabile qualsiasi modifica: se il valore cambia, la firma diventa non valida.

Descrizione dello strumento

Questo strumento consente di firmare e rimuovere la firma dai valori dei cookie utilizzando firme HMAC-SHA1, compatibili con il formato del popolare pacchetto npm cookie-signature. Inserisci il valore del cookie e la chiave segreta per generare un cookie firmato, oppure incolla un cookie firmato per estrarre e verificare il valore originale.

Esempi

Firma di un cookie:

Input (Non firmato) Chiave segreta Output (Firmato)
user123 my-secret-key user123.SNk0sCiCAuZ5cwj0lNdJfUgwqU4
session_abc app-secret session_abc.sBzU4FZRe3BfgNWZQB4viGTH37A

Rimozione della firma di un cookie:

Input (Firmato) Chiave segreta Output (Non firmato)
test.sOx9vuKRxxXdUOK0uLcAQ4CIORo password test

Rilevamento di firma non valida:

Se si tenta di rimuovere la firma di un cookie con la chiave segreta sbagliata o un valore manomesso, lo strumento mostrerà un errore "Firma non valida".

Funzionalità

  • Firma dei cookie con HMAC-SHA1 utilizzando qualsiasi chiave segreta
  • Rimozione della firma e verifica dei cookie firmati per estrarre i valori originali
  • Confronto a prova di attacchi di timing per prevenire attacchi di timing durante la verifica
  • Formato compatibile con il pacchetto Node.js cookie-signature
  • Elaborazione basata sul browser utilizzando l'API Web Crypto - nessun dato inviato ai server

Casi d'uso

  • Test delle sessioni Express.js: Verifica che i cookie di sessione di Express siano correttamente firmati e possano essere decodificati con la tua chiave segreta
  • Debug di problemi di autenticazione: Estrai il valore originale dai cookie firmati per risolvere problemi di accesso o di sessione
  • Audit di sicurezza: Verifica che le firme dei cookie funzionino correttamente nella tua applicazione web
  • Apprendimento della crittografia: Comprendi come funziona la firma dei cookie basata su HMAC nella pratica
  • Test di migrazione: Assicura la compatibilità dei cookie quando si cambiano le chiavi segrete o si esegue la migrazione tra framework