Должна ли быть скрыта ссылка для запроса на получение? - PullRequest
0 голосов
/ 30 июня 2019

Я занимаюсь разработкой сайта с использованием React. Скажем, ссылка, которую я использую для запроса на выборку: http://localhost:3000/users для разработки и https://www.mywebsite.com/users для производства. Это запрос на получение, чтобы получить список пользователей, чтобы я мог отобразить его на своем веб-сайте. Посетители сайта увидят только рабочую версию через браузер. Или кто-то может как-то узнать мой репозиторий github. Поскольку мой код переднего плана общедоступен, они могут видеть, что могут использовать эту ссылку для получения списка пользователей. Однако, что, если запрос на выборку для чего-то, что я только хочу, чтобы он прошел через веб-сайт? У меня есть почтовый запрос, который обновляет баланс пользователя. Например, https://www.mywebsite.com/change_balance. Если кто-то посмотрит на мой код и сделает успешный запрос на выборку самостоятельно, он сможет обмануть систему и получить желаемый баланс. Должны ли я иметь ссылки в файле вне репозитория git?

Я помещаю ссылки для запросов на выборку в файл и экспортирую их в App.js, чтобы мне не приходилось постоянно менять код разработки и рабочий код.

Файл ссылок

const links = ['http://localhost:3000', 'https://www.mywebsite.com'];

export default links;

Объявление переменной для одной ссылки после импорта, так что мне нужно изменить это только при переходе на производство

const link = links[0];

Один из моих запросов на выборку с использованием async await

const response = await fetch(`${link}/users`);
// rest of the code

У меня есть файл ссылок внутри моего репозитория git. Если я переместу его за пределы репозитория, посетители не смогут увидеть его, если проверят код в своих браузерах, хотя он все равно останется в истории git. Я просто параноик и не должен ли я что-то менять? Я не хочу делать мой репозиторий github приватным.

1 Ответ

0 голосов
/ 30 июня 2019

Никогда не доверяй клиенту.Не важно что.IP-спуфинг для базовой модификации заголовка распространен.Все ограничения и проверки должны быть на стороне сервера.Вы должны смело предполагать, что если у вас есть открытый API, он может и будет вызываться из разных источников.

Некоторые решения:

  • Аутентификация
  • CSRF (который можетвсе еще подражать вне вашего приложения)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...