Sobes.tech
Back to questions
Middle+
1

Куда правильно хранить refresh token на клиенте?

Companies where asked
devar

Answer from AI

sobes.tech AI

Refresh token — это чувствительный элемент, который позволяет получить новый access token без повторной аутентификации пользователя. На клиенте его нужно хранить максимально безопасно, чтобы минимизировать риск кражи.

Правильные подходы к хранению:

  • HttpOnly Secure Cookie — самый безопасный способ. Куки с флагами HttpOnly и Secure недоступны через JavaScript и передаются только по HTTPS, что снижает риск XSS и MITM атак.
  • В памяти приложения — если приложение SPA, можно хранить refresh token в памяти (например, в переменной), но тогда при обновлении страницы токен потеряется.

Что не стоит делать:

  • Не хранить refresh token в localStorage или sessionStorage, так как они доступны через JavaScript и уязвимы к XSS.

Пример установки HttpOnly cookie на сервере Python (Flask):

from flask import Flask, make_response
app = Flask(__name__)

@app.route('/set_refresh_token')
def set_refresh_token():
    resp = make_response('Refresh token set')
    resp.set_cookie('refresh_token', 'your_refresh_token_value', httponly=True, secure=True, samesite='Strict')
    return resp

Таким образом, refresh token хранится в защищённом cookie и недоступен для скриптов на клиенте.