Много написано о безопасном способе хранения токенов в типичных одностраничных приложениях (куки-файлы против локального хранилища), и использование куки-файлов часто представляется как лучший вариант. [1] [2] [3]
Причина заключается в том, что хранение данных sesssion в локальном хранилище подвержено атакам XSS.Куки имеют проблему с CSRF, но из текстов, кажется, не должно быть проблем с реализацией защиты CSRF.
Однако я не могу представить CSRF-защиту REST API для SPA, которая не была бы уязвима для XSS(если мы не говорим о повторной аутентификации и CAPTCHA) и даже в OWASP упоминается в Шпаргалке по предотвращению CSRF :
... любая уязвимость межсайтового скриптинга может быть использована для устранения всехМетоды ослабления CSRF, доступные на рынке сегодня (кроме методов смягчения, которые включают взаимодействие с пользователем ...
Поэтому, если у файлов cookie нет проблем с XSS, но есть проблема с CSRF, но CSRF бесполезен, если присутствует XSSпочему они считаются лучшим вариантом? В случае, если это не так, какова будет защита CSRF, невосприимчивая к XSS?