Чтобы взглянуть на это, нужно принять во внимание уровень риска или вреда.
Вы создаете приложение без пользователей, POC / MVP? Вы стартап, которому нужно быстро выйти на рынок и протестировать свое приложение? Если да, я бы, вероятно, просто реализовал самое простое решение и сосредоточился на поиске продукта, подходящего для рынка. Используйте localStorage, так как его часто проще реализовать.
Вы создаете приложение версии 2 с большим количеством активных пользователей в день или приложение, от которого люди / компании сильно зависят. Будет ли взломать мало места для восстановления или нет? Если это так, я бы внимательно посмотрел на ваши зависимости и подумал о том, чтобы сохранить информацию токена в файле cookie только для http.
Использование как localStorage, так и хранилища файлов cookie / сеансов имеет свои плюсы и минусы.
Как указано в первом ответе: если ваше приложение имеет XSS-уязвимость, ни одна из них не защитит вашего пользователя. Поскольку большинство современных приложений имеют дюжину или более различных зависимостей, становится все труднее гарантировать, что одна из зависимостей вашего приложения не будет уязвима для XSS.
Если в вашем приложении есть XSS-уязвимость и хакер смог ее использовать, хакер сможет выполнять действия от имени вашего пользователя. Хакер может выполнять запросы GET / POST, получая токен из localStorage, или может выполнять запросы POST, если токен хранится в файле cookie только для http.
Единственным недостатком хранения вашего токена в локальном хранилище является то, что хакер сможет прочитать ваш токен.