Использовать
JWT
По поводу хранения:
Cookies при правильном использовании являются адекватным и наиболее безопасным на данный момент решением для хранения JWT Access токена и должны следовать следующим правилам:
- Быть установленными для API домена/пути чтобы избежать оверхеда при запросах к статичным файлам (публичным картинкам/стилям/js файлам).
- Иметь флаг Secure (для передачи только по https).
- Иметь флаг httpOnly (для невозможности получения доступа из JavaScript).
- Атрибут SameSite должен быть Strict для защиты от CSRF аттак, запретит передачу Cookie файлов если переход к вашему API был не с установленого в Cookie домена.
На стороне сервера так же должно быть настроено:
- Content-Security-Policy – ограничение доверенных доменов для предотвращения возможных XSS атак
- Заголовок X-Frame-Options для защиты от атак типа clickjacking.
- X-XSS-Protection – принудительно включить встроенный механизм защиты браузера от XSS атак.
- X-Content-Type-Options – для защиты от подмены MIME типов.
Соблюдение этих мер вкупе с частой ротацией Access/Refresh токенов должно помочь обеспечить высокий уровень безопасности на сайте.
Отсюда