Podpisywanie i odpisywanie ciasteczek
Podpisuj i odpisuj wartości ciasteczek HTTP przy użyciu HMAC-SHA256 w celu bezpiecznego zarządzania sesjami i weryfikacji integralności danych
Wejście
Wyjście
Instrukcja
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:
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.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