Что такое подписывание cookie?

Подписывание cookie - это техника безопасности, которая добавляет криптографическую подпись к значениям cookie, обеспечивая их целостность и подлинность. Когда сервер отправляет cookie в браузер, он добавляет к значению cookie код аутентификации сообщения на основе хеша (HMAC). Эта подпись создается с использованием секретного ключа, известного только серверу. Когда браузер отправляет cookie обратно, сервер может проверить подпись, чтобы подтвердить, что cookie не был изменен.

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

HMAC (код аутентификации сообщения на основе хеша) сочетает криптографическую хеш-функцию с секретным ключом, чтобы создать уникальную подпись. Для подписывания cookie процесс выглядит следующим образом:

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

  2. Проверка: При получении подписанного cookie сервер извлекает исходное значение и подпись, пересчитывает ожидаемую подпись с использованием того же секретного ключа и сравнивает их с использованием сравнения, безопасного от атак по времени, чтобы предотвратить атаки по времени.

Зачем использовать подписанные cookie?

Неподписанные cookie легко могут быть изменены пользователями или вредоносными скриптами. Пользователь может изменить свой идентификатор сеанса, роль пользователя или другие конфиденциальные данные, хранящиеся в cookie. Подписанные cookie предотвращают это, делая любое изменение обнаруживаемым - если значение меняется, подпись становится недействительной.

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

Этот инструмент позволяет подписывать и отменять подписи cookie с использованием подписей HMAC-SHA1, совместимых с популярным форматом пакета cookie-signature npm. Введите значение своего cookie и секретный ключ, чтобы сгенерировать подписанный cookie, или вставьте подписанный cookie, чтобы извлечь и проверить его исходное значение.

Примеры

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

Ввод (неподписанный) Секретный ключ Вывод (подписанный)
user123 my-secret-key user123.SNk0sCiCAuZ5cwj0lNdJfUgwqU4
session_abc app-secret session_abc.sBzU4FZRe3BfgNWZQB4viGTH37A

Отмена подписи cookie:

Ввод (подписанный) Секретный ключ Вывод (неподписанный)
test.sOx9vuKRxxXdUOK0uLcAQ4CIORo password test

Обнаружение недействительной подписи:

Если вы попытаетесь отменить подпись cookie с неправильным секретным ключом или измененным значением, инструмент отобразит ошибку "Недействительная подпись".

Возможности

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

Варианты использования

  • Тестирование сеансов Express.js: Проверьте, что ваши cookie сеансов Express правильно подписаны и могут быть декодированы с помощью вашего секретного ключа
  • Отладка проблем с аутентификацией: Извлеките исходное значение из подписанных cookie, чтобы устранить неполадки при входе в систему или проблемы с сеансом
  • Аудит безопасности: Проверьте, что подписи cookie работают правильно в вашем веб-приложении
  • Изучение криптографии: Понять, как работает подписывание cookie на основе HMAC на практике
  • Тестирование миграции: Убедитесь в совместимости cookie при изменении секретных ключей или миграции между фреймворками