2017-01-16 6 views
0

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

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

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

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

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

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

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

ответ

0

Используйте это:

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

var senderUser = request.user; 

//your code 

}); 

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