REST API доступен только через мой клиент React - PullRequest
0 голосов
/ 10 октября 2019

Я создаю приложение React.js, которое будет взаимодействовать с моим REST API, встроенным в Go.

React будет использовать Javascript Fetch API для отправки запросов в мой API.

ПроблемаЯ хотел бы защитить мой API от других пользователей. Никто не должен иметь прямого доступа к моему API через URL-адрес или через любой другой клиент, такой как Postman.

Я знаю, что такое JWT, но это не решает мою проблему, потому что любой может получить доступ к токену через браузер изатем продолжайте запрашивать API за пределами клиента React, используя токен.

Я провел тщательные исследования, но ничто не соответствует моему описанию.

Заранее большое спасибо за помощь.

1 Ответ

6 голосов
/ 10 октября 2019

Это изначально неразрешимая проблема. React запускается на клиенте. Клиент контролирует код, который он выполняет. Следовательно, любой механизм, который вы используете, чтобы ограничить использование API только вашим клиентом React, будет обнаружим и повторно использован в других клиентских контекстах. Вы не можете управлять клиентом, и попытки сделать это будут безуспешными, если выплата является достаточно ценной.

Вы можете попытаться несколько укрепить ее, используя краткосрочные токены авторизации, но ничто не мешает этому токенузахват и повторное использование в другом контексте.

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

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

...