Здравствуйте, сглупил сильно, сделал эндпоинт на патч юзераи еще на пару таких важных данных патчи, и сейчас боюсь что могут эти эндпоинты использовать злоумышленники, а менять все будет очень долго, есть ли реальный риск о котором говорю и если да то может есть более легкий вариант зашиты нежели переносить все эти процессы на бэк?
По каким предположениям вы думаете что могут использовать злоумышленники? У вас если эндпоинт выполняется, его БП и так выполняется на беке, т.е. это действие уже на беке.
Закройте middleware и можете дополнительно ограничить группу пользователя, которая может использовать этот эндпоинт. Если у вас middleware выключен - любой кто знает роут эндпоинта может его использовать. С включенным - только авторизованный юзер
А что если авторизованый юзер использует его например чтобы изменить свой баланс ?
Как вариант у вас же есть, допустим User и Admin роли. Сделайте 2 эндпоинта. Для юзеров отключите все поля, которые юзер не должен использовать, для админа позвольте любые поля, которые вам нужны.
Ещё варинат. Он займёт 5 минут времени. Сделайте кастомный БП, где вы в модель будете передавать только ограниченные поля. Например для юзера вы хотите сделать, чтобы можно было редактировать профиль. На входные переменные подайте только First name, Last name, Birth date (просто пример) и на основе этого БП сделайте БП который будет доступен для юзера
Извините не совсем понимаю, на счет настроек там вроде все ок, но на счет баланса например, если он будет конвертировать например свой баланс в другую валюту (как пример) то как мне настроить так чтобы эти новые значения отправились на бэк не давая этому юзеру доступ в апи к этим параметрам? Мне же надо их как то автоматом отправить на бэк, какой бы я эндпоинт не делал для передачи этих данных разве он не сможет их подтасовать ? Извиняюсь если туплю, я слишком слаб в этой теме, я вообще думал что команда АМ уже все это сама предусмотрела и сделала безопасным все запросы, что их нельзя никак подделать
Может меня неправильно поняли, вот так настроенный эндпоинт с активированным middleware тоже могут чтоли использовать хакеры?
Этот эндпоинт может использовать только авторизованный пользователь с ролью Admins. Если не авторизоваться под этой ролью - никто не сможет использовать этот эндпоинт
Тогда вот, если пользователь зарегистрируется в приложении и нажмет конвертировать и этот эндпоинт оправит мне на бэк навые значения баланса и тд где уже они уже используются для замены в профиле пользователя этих значений то все ок безопасно? Не сможет ли например юзер в запросе с фронта сменить user_id и пропатчить соседнего пользователя? Разрешение на эндпойнт то выполнено…а значение другое. Или ддос тот же - он же может завалить запросами сервер, вполне обладая правами на это
Я рекомендую сделать следующие шаги:
- Внимательно проверить, что у каждого эндпоинта у вас стоит правильная группа пользователя в списке авторизации.
- Проверить, что у вас нельзя обычным пользователям получить другого пользователя по ID, получить сессию пользователя по ID или получить сессию по ID сессии (не токену).
Дополнительные меры безопасности, которые могут иметь сайд эффекты:
- В качестве дополнительной меры рекомендую включить API Protection, которая частично снизит возможность злоупотребления вашим API. Однако в старых или не полноценных браузерах, cross-origin iframe это работать не будет.
- На 1-2 самых-самых важных эндпоинта, где вы передаете супер-ценные данные включить API Encryption. Аналогично может не работать в старых браузерах, приводит к передаче большего количества трафика, выполняет по 2 запроса на 1 Server Request.