Нечто подобное обрабатывает серверная часть, а не React.Что бы вы ни делали, НЕ просто захватите все данные и отфильтруйте их в React.Я понятия не имею, как вы дифференцируете пользователей на основе вашего примера, но для простоты я предполагаю, что вы используете JWT .В этой реализации токен генерируется при входе в систему, и вы можете безопасно хранить его, например, в локальном хранилище или в резерве.Для всех вызовов API, которые вы делаете, вы должны прикрепить к ним токен.Затем сервер должен при каждом вызове, который выполняет зарегистрированный пользователь, делать несколько вещей:
- Проверка подписи токена
- Получение идентификатора пользователя из токена и получение разрешений /Роли
- Проверьте, имеет ли пользователь доступ к вызову API или нет
Таким образом, даже если каким-то чудом кто-то меняет токен и проходит проверку, что маловероятно,запись в базе данных останется неизменной и не позволит им получить доступ к данным, которые они ищут.
Вы можете защитить маршруты API по роли или даже более детально с помощью специального флага разрешения.Поскольку вы выполняете роли, большинство базовых сред позволяют применять некоторое промежуточное программное обеспечение, поэтому примените промежуточное программное обеспечение для проверки ролей для всех вызовов администратора, другое для всех зарегистрированных пользовательских вызовов, и это избавит вас от множества проблем..
Помните, что всякий раз, когда вы выполняете фильтрацию на стороне клиента, вы ставите всю свою безопасность на ноутбук хакеров.
Редактировать: Обращаясь к комментарию
JWT просто предоставляет стандартизированный подход к проблеме.
Давайте на секунду предположим, что ваша переменная сеанса хранит следующую информацию {'userid': 5, 'position': manager}
.Так что, если я хороший нападающий, я просто поменяю менеджера на администратора, посмотрим, где он меня получит, но если я не хороший, я попробую все идентификаторы пользователей от 0 до 10000, как с менеджером, так и с администратором какположение, посмотри, где это меня достает.Итак, вы попробуйте случайный идентификатор пользователя, например, хэш метки времени.Тем не менее, поверхность атаки только увеличилась.Теперь ты злишься на этих хакеров.Вы вроде как, я собираюсь зашифровать эту переменную сеанса, но я не могу на самом деле сохранить ключ в React, так как это можно взломать, я просто прикреплю зашифрованную вещь к каждому запросу, расшифрую, проверим,и утвердить, если это действительно.В этот момент вы практически заново изобрели JWT.