Как запретить злонамеренному пользователю брать токен из localStorage для вызова REST API - PullRequest
0 голосов
/ 04 ноября 2018

Это более концептуальный вопрос - Когда мы используем SPA как Angular, мы использовали неявный поток для аутентификации. В этом потоке мы сохраняем токен либо в localStorage, либо в sessionStorage.

Когда нам нужно было вызывать любой API, мы использовали для передачи этого маркера доступа этому API для получения данных или для POST-данных.

У меня есть вопрос здесь - Что если какой-либо злонамеренный пользователь обнаружит этот токен, он может сделать тысячи вызовов API POST с некоторыми мусорными данными, используя почтальон или любой другой клиент.

Как мы можем избежать такой ситуации?
Заранее спасибо !!!!

Я знаю, что такие вещи, как REST API, могут иметь CORS для решения этой проблемы. Когда кто-то вызывает API, мы можем проверить заголовок ORIGIN.

Но я читал, что заголовок ORIGIN также небезопасен. Вредоносный пользователь может легко установить его с помощью кода и программно вызывать API. Так как бороться с такими условиями?

Пожалуйста, смотрите это изображение ниже для более подробной информации -

Подробное описание постановки задачи

1 Ответ

0 голосов
/ 04 ноября 2018

Многие приложения SPA поддерживают токен JSON Web Token (JWT), обычно аутентификация пользователя происходит на сервере авторизации, который возвращает токен JWT. Используя токен JWT, приложение переднего плана может отправлять как часть токена аутентификации заголовка.

Обычно токен будет храниться в сеансовом / локальном хранилище для поддержания состояния полного сеанса ч / б клиента и сервера.

Поскольку клиентская структура не обеспечивает большей безопасности. Эти проверки токенов должны обрабатываться в бэкэнде.

1) Включите CORS, так что только определенное имя домена (https://example.com)) может быть разрешено для доступа к API с помощью «Access_control_allow_origin».

2) Если злоумышленник украл токен, он получит доступ через другой домен, который внутренний сервер может отказать в зависимости от источника.

3) Если вам нужна дополнительная безопасность, вы можете выбрать Аутентификацию с открытым / закрытым ключом, которая будет более защищенной.

...