Как обезопасить сервер от запросов со сторонних ресурсов [React + Spring]
У меня есть сервер написанный на Spring (REST Api сервер) и сайт написанный на ReactJS. Теперь мне надо соединить данные два приложения между собою. Это достаточно легко, но тут есть небольшая загвостка:
- Доступ к серверу может получить только приложение, которое работает с такого-то IP или находится на таком-то домене.
- Если бот/человек пытается получить данные с серверу не с моего сайта, то ему будет отправлено сообщение об отказе.
Подскажите, пожалуйста, как лучше всего реализовать данную вещь?
P.S. На сайте нет формы для авторизации!
Как вариант, я думаю использовать JWT-токен (One-time token). То есть открывается приложение на React, ему как-то выдается токен и когда это приложение отправляет запросы на сервер, то в запрос вставляется данный токен. Но я не могу ничего подобного найти в интернете
Ответы (1 шт):
Доступ к серверу может получить только приложение, которое работает с такого-то IP или находится на таком-то домене. Если бот/человек пытается получить данные с серверу не с моего сайта, то ему будет отправлено сообщение об отказе.
Посмотрите в сторону nginx. Требования выше идеально описывают его непосредственную работу.
Конфигурация nginx будет проста:
http {
allow 186.135.0.108; # ip фронтенда
deny all;
server {
server_name your.backend.com;
# прочие конфигурации nginx
}
}
Все, кто не внесены в инструкцию allow будут получать ошибку 403
Более подробно про механизм deny/allow в nginx можно прочесть здесь.