Насколько безопасен объект Parse PFUser.current()?

У меня есть вопрос о безопасности Parse и надеюсь, что кто-нибудь может дать мне несколько советов и предложений.

Я работаю над игрой, где пользователи могут накапливать игровой ресурс под названием золото.

Чтобы отслеживать, сколько золота есть у каждого пользователя, у меня есть класс Parse под названием Resource. Этот класс доступен для публичного чтения (thru get, not find), но не для публичной записи.

Класс User и класс Resource связаны между собой так: каждый объект в классе User имеет свойство под названием resourceId, которое является objectId объекта Resource, который принадлежит пользователю. Таким образом, игроки могут читать (через получить) его собственный ресурс, а также ресурсы своих друзей; и каждый объект в классе Resource имеет указатель, который указывает на пользователя в классе User

В игре пользователь может вращать призовое колесо, чтобы получить золотые призы. Когда пользователь вращает колесо, клиент вызывает функцию облачного кода и передает один аргумент, который является PFUser.current() объект.

Облачный код генерирует случайное число, чтобы определить приз, а затем записать приз в класс ресурсов. Чтобы определить, к какому объекту Resource записывать данные, облачный код выполняет 2 действия: (1) он читает resourceId из аргумента (PFUser.current())и (2) используя это resourceId, он получает соответствующий объект Resource, затем проверяет, указывает ли пользовательский указатель на тот же объект User, что и сам аргумент (опять же, PFUser.current()).

Итак, мой вопрос: безопасна ли моя установка против кого-то, кто пытается раскрутить призовое колесо другого пользователя? Может ли взломанное клиентское устройство изменить PFUser.current() возражать и притворяться другим пользователем? Есть ли лучшие способы достичь того, что я хочу сделать?

1 ответ

Использовать этот:

Parse.Cloud.define("myFunction", function (request, response) {

var senderUser = request.user;

//your code

});

Это определенно лучший способ, чем прохождение PFUser.current() в качестве аргумента - он работает с Parse SDK внутренне, что означает, что подделать его должно быть сложнее, чем аргумент.

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