Выбор ответа Senior CSRF, SameSite и CORS обновлено

Токен в localStorage и CSRF

Вопрос

SPA хранит access-токен в localStorage и отправляет его в заголовке Authorization. Что верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: CSRF невозможен, но любой XSS прочитает токен, поэтому важна защита от XSS. Браузер не прикладывает заголовок Authorization сам, поэтому подделать запрос с чужого сайта нельзя.

Варианты ответа

  1. Нужна обязательная CSRF-защита: браузер приложит заголовок с токеном сам
  2. Это полностью безопасно и от CSRF, и от XSS, раз токен не в cookie
  3. CSRF невозможен, но любой XSS прочитает токен, поэтому важна защита от XSSправильный ответ
  4. Токен в localStorage защищён флагом HttpOnly и недоступен скриптам страницы

Разбор

Браузер не прикладывает заголовок Authorization сам, поэтому подделать запрос с чужого сайта нельзя. Зато localStorage доступен любому скрипту страницы, и XSS приведёт к краже токена. HttpOnly бывает только у cookie.

Ответьте сами, а не прочитайте

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

Термины по теме