7

Я хочу сохранить токен обновления oauth в браузере. Причина, по которой я хочу его сохранить, заключается в том, что приложение может обновить токен доступа и позволить пользователю продолжить сеанс без прерывания. Я также хочу исключить необходимость использования любого типа кеша на сервере для хранения токенов, что делает его сдержанным.Почему я не могу хранить токен обновления oauth в браузере?

Мне сказали, что сохранение токена обновления в браузере неверно, потому что оно небезопасно.

Я думаю, что это нормально, потому что:

  • Маркеры будут храниться в HTTPOnly, защищенные куки сессии, чтобы они не должны быть уязвимы для XSS или людей в середине атак, и они будут отброшены, когда пользователь закрывает сеанс.
  • Все коммуникации к серверу осуществляется через HTTPS
  • Маркер обновления может быть признан недействительным, если подозрительная активность обнаружена
  • Самое главное вы не можете использовать маркер обновления, если вы не знаете секрет клиента, который будет известен только сервером.

Я ошибаюсь, думая, что все в порядке? Пожалуйста, объясните, почему!

ответ

4

Сохранение маркеров в качестве HTTPOnly, безопасного печенья, вероятно, лучшее, что вы можете достичь с точки зрения безопасности. Иногда проблема заключается в том, что cookie httpOnly недостаточно хорош из-за других (небезопасных) причин, поскольку Javascript явно не имеет доступа (вот в чем смысл). Поэтому люди иногда хотят хранить токены в других хранилищах браузеров, таких как localStorage, или немного лучше, в объектах JavaScript, оба из которых значительно менее безопасны, чем cookie httpOnly (но все же может быть достаточно хорошим для некоторых приложений).

Сохранение маркера в httpOnly и защищенном файле cookie делает его в значительной степени эквивалентным идентификатору сеанса, и его безопасность также будет одинаковой в этом отношении (очевидно, что другие аспекты могут быть разными).