SPA + веб-API с JWT токеном / куки - PullRequest
0 голосов
/ 10 мая 2018

У меня есть приложение SPA Angular 5 с базовым веб-API ASP.NET в качестве чистого веб-API на сервере (они могут быть размещены на другом сервере / домене). После поиска и чтения в режиме онлайн я знаю, что мы могли бы либо сохранить токен в локальном хранилище, либо в cookie-файлах httponly, но оба этих метода имеют свои собственные уязвимости (локальное хранилище подвержено XSS, cookie-файлы будут уязвимы для CSRF).

Так что я хотел бы знать:

  1. Какой общепринятый метод или практика люди фактически используют на производственном сайте в настоящее время, который защищает разумные основания для атак XSS и CSRF, когда речь идет о защите Web API? Например, я заглянул в portal.azure.com. Похоже, они помещают токен на предъявителя в заголовок запроса, но я не вижу, где они хранят токен.
  2. Какова обычная практика / способ для SPA и Web API получить токен противодействия фальсификации? Я не могу найти много информации об этом.

Спасибо.

1 Ответ

0 голосов
/ 10 мая 2018

JWT похожи на UserID и Password, вы не должны использовать localStorage для конфиденциальных данных, это не предназначено для этого. Прочитайте, например, эту хорошую статью и это видео YouTube:

https://dev.to/rdegges/please-stop-using-local-storage-1i04 и https://medium.com/spektrakel-blog/local-storage-is-not-a-secure-place-9542cbfa904a XSRF / CSRF можно избежать с помощью различной техники, читайте OWASP

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

Обычный способ сделать это (Double Submit Cookie) - использовать токен xsfr, добавляемый в заголовок http / s каждого запроса, поскольку злоумышленник не может изменить заголовок http запроса.

В основном вам нужно отправить два куки:

1) HttpOnly Cookie с JWT 1) не-HttpOnly Cookie с xsrf-токеном

затем создайте Interceptor, который прочитает xsrf-токен из cookie и добавит заголовочный x-xsrf-token. Проверка на стороне сервера, равен ли xsrf-токен в JWT токену в x-xsrf-token (используйте неузнаваемый алогритм для xsrf-токена)

надеюсь, это поможет

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