Безопасность React JS Rest API с бэкэндом GoLang

Я создал ReactJS Frontend с GoLang Backend. Все данные запрашиваются / отправляются ReactJS из / в Golang Backend с использованием Rest API.

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

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

Некоторые дополнительные сведения о моем приложении:

  1. Внешний и внутренний сервер отделены друг от друга.
  2. Интерфейсный сервер использует Nginx для обслуживания статических файлов.
  3. Новый токен должен генерироваться каждый раз при открытии страницы, и он должен быть действителен не более 8 минут.

Пожалуйста, предложите мне, как лучше всего защитить мои остальные API с учетом структуры моего приложения.

P.S .: Для этой страницы нет входа в систему или какого-либо другого механизма, который бы установил подлинность пользователя.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
907
1

Ответы 1

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

  • https://github.com/dgrijalva/jwt-go -> Используйте этот пакет для генерации токена в бэкэнде и установки времени истечения срока действия и требований в соответствии с вашими потребностями. Ваши претензии также могут иметь детальный контроль (уровень аутентификации) на основе ролей.
  • Отправьте этот токен на ваш внешний интерфейс из входа в систему или любой конечной точки, которая является шлюзом к вашему API.
  • Сохраните токен в локальном хранилище / https cookie по вашему желанию на вашем интерфейсе.
  • При каждом вызове API, который должен быть защищен, отправляйте этот токен в заголовке, проверяйте этот токен на сервере, используя упомянутую выше библиотеку.
  • Проблема будет заключаться в том, чтобы аннулировать эти токены при забытом или сбросе пароля / выходе из системы. Вы можете использовать технику токенов черного списка, храня их в redis / db и регулярно сбрасывая их с помощью cron.

В этом есть смысл, Кунал. Но вот кое-что, к чему я отношусь скептически: нет входа в систему, поэтому человеку не нужно вводить какие-либо уникальные учетные данные, которые могут установить их подлинность. В таком случае, если токен просто сгенерирован путем вызова API, не может ли один и тот же API использоваться злоумышленником для создания нескольких токенов, а затем вызывать неограниченное количество других API с этими сгенерированными токенами?

D S AMAN 28.07.2018 10:29

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

Kunal 28.07.2018 10:31

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

Kunal 28.07.2018 10:32

По сути, это вариант использования для веб-проверки, когда пользователю не обязательно входить в систему, чтобы продолжить транзакцию. Но все же, поскольку API-интерфейсы используются для очень важных целей, токен или ключи необходимы для обеспечения подлинности запросов. Реализация Cors - это способ, но любой может легко подделать их. Вот почему я изо всех сил пытаюсь найти лучший способ защитить эти API. Ограничитель скорости API уже включен на стороне сервера. Но я хочу реализовать начальный уровень безопасности с некоторой защитой ключей api.

D S AMAN 29.07.2018 10:12

Другие вопросы по теме