Видны ли сторонним лицам данные из localStorage?
DOM и браузер
Данные из localStorage не видны напрямую сторонним сайтам (изоляция по origin), но доступны любому JavaScript на самой странице, поэтому уязвимы к XSS.
Изоляция по origin
localStorage привязан к origin (протокол + домен + порт). Сайт a.com не может прочитать localStorage сайта b.com — браузер это запрещает (как и CORS для запросов).
// На a.com
localStorage.getItem('token'); // только данные a.comТак что «сторонний сайт» напрямую данные не увидит.
Но: уязвимость к XSS
localStorage доступен любому JavaScript, выполняемому на странице — включая внедрённый через XSS:
// Если злоумышленник внедрил скрипт (XSS)
localStorage.getItem('token'); // украдёт токенПоэтому чувствительные данные (токены) не хранят в localStorage — при XSS их легко украсть.
Кто ещё «видит»
- Пользователь — через DevTools (это его браузер).
- Расширения браузера с доступом к странице.
- Любой скрипт на странице (свой и сторонние библиотеки/виджеты).
Безопаснее
Токены — в память или HttpOnly cookie (недоступна JS).
Коротко для собеседования
localStorage изолирован по origin — сторонний сайт напрямую не прочитает. Но доступен любому JS на странице, включая XSS-скрипт, поэтому уязвим — токены там не хранят. Видят: свой и сторонний JS страницы, расширения, пользователь через DevTools. Секреты — в память/HttpOnly cookie.