Я все еще новичок в 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 не следует разрабатывать как таковой, поэтому я просто задаю неправильный вопрос?





Я думаю, что независимо от того, что вы делаете с кодом JavaScript, чтение конечной точки API - это самая легкая вещь в мире (Wireshark - простой и плохой пример), как только он вызывается из браузера. Ожидайте, что он будет публичным, с учетом сказанного, защитить его проще, чем вы могли ожидать.
Доступ-Контроль-Разрешить-Происхождение твой друг
Разрешить запросы только с заданных 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);
}
Используйте некоторую форму жетон, которая может быть проверена
Это еще один традиционный подход, и вы можете найти больше об этом здесь: https://www.owasp.org/index.php/REST_Security_Cheat_Sheet
Ваше здоровье!
Вот несколько советов по решению проблемы, с которой вы столкнулись:
Это распространенная проблема. Вам нужно решить эту проблему, используя идентификаторы, которые являются GUID, а не последовательно сгенерированными целыми числами.
Ограничение одним и тем же происхождением не сработает, потому что кто-то может сделать запрос через Postman, Insomnia или Curl.
Вы также можете ввести ограничение скорости
Кроме того, вы можете сделать свой токен недействительным после определенного количества запросов или потребовать его обновления после каждых 10 запросов.