Я сейчас изучаю дизайн серверов без сохранения состояния.Я узнал, как хранить токен на основе HMAC в HTTP-куки.Идея состоит в том, что сервер имеет секретный ключ и является единственным объектом, способным генерировать действительные токены.
Я также читал эту ветку: Как работают серверы без сохранения состояния?
Есть интересный пример о Paypal-подобном сайте.Если злоумышленник просто скопирует содержимое токена, он может делать с учетной записью все, что захочет, до тех пор, пока токен не станет недействительным.
Я вижу несколько способов избежать этой проблемы:
- Сохранить IP-адрес или его хэш в токене: возможно, раздражает пользователя?
- Сохранить пользовательский агент или его хэш в токене: низкое добавленное значение
- Запросить повторную аутентификацию для безопасностиварианты использования (например: смена пароля)
- Добавить слой одноразовых паролей
Есть ли дополнительные недостатки?Как защититься от этих слабостей?