Лучшая практика с токенами CRSF и JWT в одностраничных приложениях - PullRequest
0 голосов
/ 14 июля 2020

Я провел небольшое исследование аутентификации / авторизации и решил использовать JWT для своего Angular приложения. Этот пост предназначен только для того, чтобы уточнить у вас, есть ли в процессе какие-либо лазейки, поскольку я не могу найти полное и безопасное решение для inte rnet и сам сделал несколько предположений.

В то время как во многих руководствах и рецензиях предлагается сохранять jwt в локальном хранилище, многие другие критикуют его уязвимость для XSS и сохранение его в Cook ie с атрибутами HttpOnly и Secure - это путь к go. Это открывает возможность для подделки запросов.

Чтобы предотвратить подделку запросов, вам либо требуется атрибут SameSite в JWT Cook ie, который я в настоящее время не хочу использовать, так как я не могу гарантировать Приложение Angualar и сервер аутентификации будут иметь один и тот же домен. Другой вариант - это CRSF-токен, который генерирует Сервер. Поскольку я использую SPA, я не могу сгенерировать новый CRSF для каждой формы на странице, поэтому я придумал идею генерировать CRSF-токен при входе в систему и отправлять его обратно клиенту, чтобы он мог использовать его на каждом один запрос Http. Включенный CRSF-Token будет включен в JWT-Token, чтобы сервер мог проверить CRSF-Token, не сохраняя его на сервере.

Чтобы предотвратить использование JWT и CRSF-Token слишком долго JWT Срок действия истекает через 15 минут, и требуется повторная sh. Для метода refre sh требуется JWT с истекшим сроком действия и токен refre sh, который будет отправлен клиенту при входе в систему для создания нового JWT с новым CRSF-токеном.

Является ли этот метод безопасно использовать JWT и CRSF-Token, или вы не могли бы предложить какие-либо изменения в процессе?

...