我对Parse安全性有疑问,希望有人能给我一些指示和建议。
我正在开发一款游戏,用户可以在其中积累一种名为黄金的游戏资源。
为了跟踪每个用户拥有多少黄金,我有一个名为Resource的Parse类。这个类是公共可读的(通过get,not find)但不是公共可写的。
User类和Resource类的链接方式如下:
User类中的每个对象都有一个名为resourceId的属性,该属性是属于该用户的Resource对象的objectId
。因此,玩家可以阅读(通过获取)他自己的资源以及他的朋友的资源;和
Resource类中的每个对象都有一个指向User类
在游戏中,用户可以旋转奖励轮获得金奖。当用户旋转滚轮时,客户端调用云代码函数并传递单个参数,即PFUser.current()
对象。
云代码生成一个随机数来确定奖品,然后将奖品写入资源类。要确定要写入哪个Resource对象,云代码会做两件事:
(1)它从参数resourceId
中读取(PFUser.current())
,并且
(2)使用resourceId
,它获取相关的Resource对象,然后检查用户指针是否指向与参数本身相同的User对象(同样,PFUser.current()
)。
所以我的问题是,我的设置是否可以防止有人试图转动其他用户的奖励轮?受感染的客户端设备是否可以修改PFUser.current()
对象并伪装成另一个用户?有没有更好的方法来实现我想做的事情?
答案 0 :(得分:0)
使用此:
Parse.Cloud.define("myFunction", function (request, response) {
var senderUser = request.user;
//your code
});
这绝对比传递PFUser.current()
作为参数更好 - 它在内部使用Parse SDK,这意味着伪造它比参数更难。