Какво е подписване на cookies?

Подписването на cookies е техника за сигурност, която добавя криптографски подпис към стойностите на cookies, гарантирайки тяхната интегритет и автентичност. Когато сървър изпраща cookie към браузър, той добавя код за удостоверяване на съобщението, базиран на хеш (HMAC), към стойността на cookie. Този подпис се създава с помощта на таен ключ, известен само на сървъра. Когато браузърът изпраща cookie обратно, сървърът може да провери подписа, за да потвърди, че cookie не е бил манипулиран.

Как работи подписването с HMAC-SHA1?

HMAC (Hash-based Message Authentication Code) комбинира криптографска хеш функция с таен ключ, за да произведе уникален подпис. За подписване на cookies процесът работи както следва:

  1. Подписване: Оригиналната стойност на cookie се комбинира с таен ключ, използвайки алгоритъма HMAC-SHA1, произвеждайки подпис. Окончателният формат на подписания cookie е value.signature, където подписът е кодиран в base64url.

  2. Проверка: При получаване на подписан cookie, сървърът извлича оригиналната стойност и подпис, преизчислява очаквания подпис, използвайки същия таен ключ, и ги сравнява с помощта на сравнение, безопасно спрямо времето, за да предотврати атаки на времето.

Защо да се използват подписани cookies?

Неподписаните cookies могат лесно да бъдат модифицирани от потребители или злонамерени скриптове. Потребител може да промени своя ID на сесия, роля на потребител или други чувствителни данни, съхранени в cookies. Подписаните cookies предотвратяват това, като правят всяка модификация открита — ако стойността се промени, подписът става невалиден.

Описание на инструмента

Този инструмент ви позволява да подписвате и отписвате стойности на cookies, използвайки подписи HMAC-SHA1, съвместими с популярния формат на npm пакета cookie-signature. Въведете стойността на вашия cookie и таен ключ, за да генерирате подписан cookie, или поставете подписан cookie, за да извлечете и проверите неговата оригинална стойност.

Примери

Подписване на cookie:

Вход (Неподписан) Таен ключ Изход (Подписан)
user123 my-secret-key user123.SNk0sCiCAuZ5cwj0lNdJfUgwqU4
session_abc app-secret session_abc.sBzU4FZRe3BfgNWZQB4viGTH37A

Отписване на cookie:

Вход (Подписан) Таен ключ Изход (Неподписан)
test.sOx9vuKRxxXdUOK0uLcAQ4CIORo password test

Открояване на невалиден подпис:

Ако се опитате да отпишете cookie с грешен таен ключ или манипулирана стойност, инструментът ще покаже грешка "Invalid signature".

Функции

  • Подписване на cookies с HMAC-SHA1, използвайки всеки таен ключ
  • Отписване и проверка на подписани cookies, за да извлечете оригиналните стойности
  • Сравнение, безопасно спрямо времето, предотвратява атаки на времето по време на проверка
  • Съвместим формат с Node.js пакета cookie-signature
  • Обработка в браузър, използвайки Web Crypto API — никакви данни не се изпращат на сървъри

Случаи на употреба

  • Тестване на Express.js сесии: Проверете, че вашите Express сесийни cookies са правилно подписани и могат да бъдат декодирани с вашия таен ключ
  • Отстраняване на грешки при удостоверяване: Извлечете оригиналната стойност от подписани cookies, за да отстраните проблеми с влизане или сесия
  • Одит на сигурност: Проверете, че подписите на cookies работят правилно във вашето уеб приложение
  • Обучение по криптография: Разберете как работи подписването на cookies, базирано на HMAC, на практика
  • Тестване на миграция: Гарантирайте съвместимост на cookies при промяна на тайни ключове или миграция между фреймворки