Где хранить токен JWT в angular? - PullRequest
2 голосов
/ 03 февраля 2020

Я создаю приложение с Django и angular. В настоящее время я храню JWT, выпущенный серверной частью, в локальном хранилище. Но я обеспокоен атаками XSS. Стоит ли хранить токен, используя только HTTP cook ie? Я также думаю о сохранении токена в моем классе обслуживания auth в переменном поле. Но я не совсем уверен, если angular разделяет службу во всем приложении. Будет ли один экземпляр моей службы аутентификации?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Позвольте разобраться:

Если вы получили XSS'd - игра окончена. period.

Тем не менее,

один подход, который прошел внешний Penetration Tests на моем текущем рабочем месте, заключался бы в размещении JWT токена в httpOnly secure samesite=strict cook ie.

Для дальнейшего предотвращения CSRF вы можете добавить идентификатор в веб-хранилище, прикрепить его к каждому xhr в качестве заголовка.

На сервере извлеките идентификатор из jwt и сравните это со значением заголовка.

0 голосов
/ 03 февраля 2020

Если вы используете стандартное внедрение зависимостей, каждый раз создается новый экземпляр вашей службы, поэтому поле в классе службы не будет сохранено.

Сессия или локальное хранилище нормально. Механизм JWT предотвращает легкое изменение содержимого клиентом (так как вы должны проверять его в нисходящих серверных службах).

Возможно, вы могли бы сохранить некоторую оригинальную подпись запроса в полезной нагрузке JWT и проверить любые вторичные Запросы по этому совпадению совпадают. Например, IP-адрес, строка агента пользователя и т. Д. c.

Лично (при условии, что оно реализовано правильно), я считаю, что это более чем достаточно для безопасности большинства веб-приложений. Очевидно, что банковские / финансовые приложения могут получить от sh до go лишнюю милю с двухфакторной аутентификацией и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...