Чем файлы cookie отличаются от JWT и почему они считаются хуже, чем JWT?

Я читал об использовании токенов для аутентификации. Однако я не понимаю, чем токены (JWT) отличаются от файлов cookie. Оба будут хранить информацию о пользователе (в виде утверждений в токенах), иметь определенное постоянство и отправляться с каждым клиентским запросом на сервер.

Несколько вопросов, которые приходят в голову, в дополнение к вышеизложенному -

  1. Токены JWT не подвержены атаке Man in the Middle? Если кто-то украдет токен (на незашифрованном канале), не могут ли они выдать себя за первоначального пользователя? (если мы не добавим IP пользователя и т. д. в претензии)

  2. Я читал несколько тирадов о том, что файлы cookie не подходят для мобильных приложений нового поколения, а токены - это ответ. Почему?

  3. Почему токены считаются более безопасными, чем файлы cookie? Что делает их более неуязвимыми для атак?

  4. Должен ли токен выдаваться только сервером, или можно получить токен от другого поставщика OAuth, настроить (добавить / удалить утверждения) и повторно использовать его?

  5. С точки зрения производительности куки-файлы «плохие», поскольку у них есть ограничение по размеру, поэтому они просто сохраняют идентификатор сеанса (обычно) с данными сеанса на сервере. Это уменьшает размер файлов cookie. Но JWT, весь токен должен быть отправлен, поэтому, если токен содержит данные сеанса в виде утверждений, мы по сути будем отправлять этот постоянно увеличивающийся токен каждый раз. Если я правильно понимаю, разве это не плохая производительность JWT по сравнению с файлами cookie?

Спасибо


person sppc42    schedule 29.07.2015    source источник
comment
Первый вопрос - сравнить яблоки с апельсинами. Cookie - это просто механизм хранения и транспортировки. Токен может храниться в файле cookie.   -  person Mika Tuupola    schedule 29.07.2015


Ответы (1)


Токены JWT не подвержены атаке Man in the Middle?

Да, вы должны использовать HTTPS, чтобы никто не видел JWT в заголовках HTTP-запросов. Если кто-то получит токен, он может выдать себя за первоначального пользователя. То же самое можно сказать и о файлах cookie.

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

Большинство мобильных приложений не используют браузеры для выполнения HTTP-запросов. Браузеры упрощают работу с файлами cookie для веб-разработчиков. Для мобильных разработчиков использование JWT может быть менее обременительным, чем использование файлов cookie.

Почему токены считаются более безопасными, чем файлы cookie? Что делает их более неуязвимыми для атак?

Токены не обязательно более безопасны, чем файлы cookie (файл cookie может быть подписан, как JWT). Преимущества безопасности заключаются в том, что вы не подвергаетесь эксплойтам, которые обманом заставляют браузер непреднамеренно использовать файлы cookie (атаки CSRF).

Должен ли токен выдаваться только сервером, или можно получить токен от другого поставщика OAuth, настроить (добавить / удалить утверждения) и повторно использовать его?

JWT подписан с секретом, который должен знать только сервер / организация, которые его сгенерировали. Таким образом, только серверы, которые знают секрет, могут подтвердить, что токен действителен. Хотя сервер, генерирующий токен, не обязательно должен быть тем же сервером, который его проверяет, вам не имеет смысла настраивать и повторно использовать чужой токен.

Справочная информация

person Sunil D.    schedule 29.07.2015
comment
спасибо за ответ, это очень помогает. Однако исходный вопрос - «Чем файлы cookie отличаются от JWT» еще не объяснен. Я изменил список, чтобы добавить это также в качестве вопроса. - person sppc42; 29.07.2015