Я пытался реализовать надежный поток аутентификации для проекта Next. js, но сейчас я полностью потерян. Я уже видел примеры репозитория Next. js. Но у меня много вопросов для полного решения.
У меня есть express. js API и отдельный интерфейс Next. js. Все данные и аутентификация обрабатываются API. Frontend просто отображает страницы с помощью SSR. Если бы я просто создал монолитный проект, в котором рендеринг страниц и всех данных обрабатывался бы одним сервером (с пользовательской опцией сервера для Next. js Я имею в виду), я бы просто использовал express -session и csurf. , Это был бы традиционный способ управления сеансами и создания защиты от CSRF.
Express. js API не требуется. Это всего лишь пример. Это может быть Django API или. Net Core API. Главное, это отдельный сервер и отдельный проект.
Как я могу иметь простую, но надежную структуру? Я изучил некоторые из моих любимых веб-сайтов (netlify, zeit.co, heroku, spectrum.chat et c). Некоторые из них используют localalstorage для хранения доступа и обновления токенов sh (уязвимость XSS). Некоторые из них используют куки, и они даже не HTTPOnly (XSS и CSRF уязвимы). И примеры, такие как spectrum.chat, используют способ, который я упомянул выше (cook ie -сессия + предотвращение csrf).
Я знаю, что вокруг токенов JWT есть гигантский обман. Но я нахожу их слишком сложными. Большинство уроков просто пропускают все истечение срока действия, обновление токенов, отзыв токенов, черные списки, белые списки и т. Д. c.
И многие из сеансов готовят ie примеров для Next. js почти никогда не упоминают CSRF , Честно говоря, аутентификация всегда большая проблема для меня. Однажды я прочитал, что HTTPOnly файлы cookie должны использоваться, на следующий день я вижу гигантский популярный сайт, который даже не использует их. Или они говорят «никогда не храните свои токены в localStorage», и бум какой-то гигантский проект просто использует этот метод.
Может кто-нибудь показать мне какое-то направление для этой ситуации?