Czym jest podpisywanie ciasteczek?

Podpisywanie ciasteczek to technika bezpieczeństwa, która dodaje kryptograficzny podpis do wartości ciasteczek, zapewniając ich integralność i autentyczność. Gdy serwer wysyła ciasteczko do przeglądarki, dołącza do wartości ciasteczka kod uwierzytelniający oparty na funkcji skrótu (HMAC). Ten podpis jest tworzony przy użyciu klucza tajnego znanego tylko serwerowi. Gdy przeglądarka wysyła ciasteczko z powrotem, serwer może zweryfikować podpis, aby potwierdzić, że ciasteczko nie zostało naruszone.

Jak działa podpisywanie HMAC-SHA1?

HMAC (Hash-based Message Authentication Code) łączy kryptograficzną funkcję skrótu z kluczem tajnym, aby wygenerować unikalny podpis. W przypadku podpisywania ciasteczek proces przebiega następująco:

  1. Podpisywanie: Oryginalna wartość ciasteczka jest łączona z kluczem tajnym przy użyciu algorytmu HMAC-SHA1, co prowadzi do wygenerowania podpisu. Ostateczny format podpisanego ciasteczka to wartość.podpis, gdzie podpis jest zakodowany w base64url.

  2. Weryfikacja: Podczas odbierania podpisanego ciasteczka serwer wyodrębnia oryginalną wartość i podpis, ponownie oblicza oczekiwany podpis przy użyciu tego samego klucza tajnego i porównuje je przy użyciu porównania odporne na ataki czasowe, aby zapobiec atakom czasowym.

Dlaczego używać podpisanych ciasteczek?

Niepodpisane ciasteczka mogą być łatwo modyfikowane przez użytkowników lub złośliwe skrypty. Użytkownik mógłby zmienić swój identyfikator sesji, rolę użytkownika lub inne wrażliwe dane przechowywane w ciasteczkach. Podpisane ciasteczka zapobiegają temu, ponieważ jakakolwiek modyfikacja staje się wykrywalna - jeśli wartość się zmieni, podpis stanie się nieprawidłowy.

Opis narzędzia

To narzędzie umożliwia podpisywanie i odpisywanie wartości ciasteczek przy użyciu podpisów HMAC-SHA1, zgodnie z popularnym formatem pakietu cookie-signature npm. Wprowadź wartość ciasteczka i klucz tajny, aby wygenerować podpisane ciasteczko, lub wklej podpisane ciasteczko, aby wyodrębnić i zweryfikować jego oryginalną wartość.

Przykłady

Podpisywanie ciasteczka:

Dane wejściowe (niepodpisane) Klucz tajny Dane wyjściowe (podpisane)
user123 mój-klucz-tajny user123.SNk0sCiCAuZ5cwj0lNdJfUgwqU4
session_abc app-secret session_abc.sBzU4FZRe3BfgNWZQB4viGTH37A

Odpisywanie ciasteczka:

Dane wejściowe (podpisane) Klucz tajny Dane wyjściowe (niepodpisane)
test.sOx9vuKRxxXdUOK0uLcAQ4CIORo hasło test

Wykrywanie nieprawidłowego podpisu:

Jeśli spróbujesz odpisać ciasteczko z nieprawidłowym kluczem tajnym lub zmodyfikowaną wartością, narzędzie wyświetli komunikat "Nieprawidłowy podpis".

Funkcje

  • Podpisywanie ciasteczek za pomocą HMAC-SHA1 przy użyciu dowolnego klucza tajnego
  • Odpisywanie i weryfikacja podpisanych ciasteczek w celu wyodrębnienia oryginalnych wartości
  • Porównanie odporne na ataki czasowe zapobiega atakom czasowym podczas weryfikacji
  • Zgodny format z pakietem Node.js cookie-signature
  • Przetwarzanie w przeglądarce przy użyciu Web Crypto API - bez wysyłania danych na serwery

Przypadki użycia

  • Testowanie sesji Express.js: Sprawdź, czy Twoje ciasteczka sesji Express są prawidłowo podpisane i można je zdekodować przy użyciu Twojego klucza tajnego
  • Debugowanie problemów z uwierzytelnianiem: Wyodrębnij oryginalną wartość z podpisanych ciasteczek, aby rozwiązać problemy z logowaniem lub sesją
  • Audyt bezpieczeństwa: Sprawdź, czy podpisy ciasteczek działają poprawnie w Twojej aplikacji internetowej
  • Nauka kryptografii: Zrozum, jak działa podpisywanie ciasteczek oparte na HMAC w praktyce
  • Testowanie migracji: Upewnij się, że ciasteczka są kompatybilne podczas zmiany kluczy tajnych lub migracji między ramami