Насколько безопасен объект 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 внутренне, что означает, что подделать его должно быть сложнее, чем аргумент.