У нашего приложения для Android есть только вход в facebook .
Вот что происходит на сервере:
Пользователь создается, когда запрос POST отправляется с использованием токена доступа пользователя facebook в теле.
Всякий раз, когда пользователь создается по запросу POST, токен api генерируется и отправляется в виде ответа следующим образом:
{"message":"User Successfully Created","api_token":"ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo"}
Я сделал это, потому что токен api, сгенерированный на сервере, хранится в локальном хранилище приложений Android и необходим для выполнения других запросов.
Теперь, если пользователь уже существует на сервере, ответ будет
{"message":"User Already Exists!!","api_token":"ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo"}
Это произойдет, если пользователь удалит приложение и снова установит его.
Теперь, чтобы отправить оценку, запрос PATCH должен быть отправлен с:
Заголовки:
Content-Type:application/x-www-form-urlencoded api_token:ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo fb_id:xxxxxxxxxx
Тело:
distance:2 golds:19 xp:23
(Примечание: я опробовал вышеуказанный запрос, используя почтальон )
Теперь проблема в том, что я заметил лазейку.
Человек может узнать свой токен доступа к пользователю facebook и свой идентификатор facebook в любое время. Таким образом, если они делают запрос POST с этим токеном доступа пользователя, они получат api_token (в ответе «Пользователь уже существует !!»). И как только у них есть api_token и fb_id, они могут сделать запрос PATCH, чтобы изменить свои оценки на все, что захотят.
Что я делаю не так? Как я могу защитить свой сервер от взлома?
Пожалуйста, помогите мне. Я новичок в дизайне api.
благодаря