Как лучше всего предотвратить очистку приложения React?

Я все еще новичок в React, так что простите меня, если вопрос слишком наивен. Насколько я понимаю, React обычно требует API для выполнения запросов XHR. Таким образом, кто-то с очень простым техническим образованием может легко понять, как выглядит api, посмотрев на вкладку сети в консоли отладки веб-браузера.

Например, люди могут найти страницу, которая вызывает api https://www.example.com/product/1, а затем они могут просто выполнить парсинг методом грубой силы по идентификатору продукта 1 - 10000, чтобы получить данные для всех продуктов.

https://www.example.com/api/v1/product/1
https://www.example.com/api/v1/product/2
https://www.example.com/api/v1/product/3
https://www.example.com/api/v1/product/4
https://www.example.com/api/v1/product/5
https://www.example.com/api/v1/product/6
...

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

Итак, как лучше всего предотвратить парсинг в приложении React? или, может быть, api не следует разрабатывать как таковой, поэтому я просто задаю неправильный вопрос?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
396
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, что независимо от того, что вы делаете с кодом JavaScript, чтение конечной точки API - это самая легкая вещь в мире (Wireshark - простой и плохой пример), как только он вызывается из браузера. Ожидайте, что он будет публичным, с учетом сказанного, защитить его проще, чем вы могли ожидать.

  1. Доступ-Контроль-Разрешить-Происхождение твой друг

    Разрешить запросы только с заданных URL. Это может разрешать или не разрешать запросы GET, но всегда будет разрешать прямой доступ по маршрутам GET. Запомни.


Пример PHP

$origin = $_SERVER['HTTP_ORIGIN'];
$allowed_domains = [
    'http://mysite1.com',
    'https://www.mysite2.com',
    'http://www.mysite2.com',
];

if (in_array($origin, $allowed_domains)) {
    header('Access-Control-Allow-Origin: ' . $origin);
}

  1. Используйте некоторую форму жетон, которая может быть проверена

    Это еще один традиционный подход, и вы можете найти больше об этом здесь: https://www.owasp.org/index.php/REST_Security_Cheat_Sheet

Ваше здоровье!

Ответ принят как подходящий

Вот несколько советов по решению проблемы, с которой вы столкнулись:

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

  2. Ограничение одним и тем же происхождением не сработает, потому что кто-то может сделать запрос через Postman, Insomnia или Curl.

  3. Вы также можете ввести ограничение скорости

  4. Кроме того, вы можете сделать свой токен недействительным после определенного количества запросов или потребовать его обновления после каждых 10 запросов.

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