【发布时间】:2015-12-24 03:11:33
【问题描述】:
我现在正在使用 Angular JS 和 Parse.com 云作为我的数据库构建简单的游戏。
我的目标是在游戏中,将用户得分存储在 Parse 云中。
但是,当任何人都可以访问我的 Parse 密钥时,我怎么能安全地做到这一点,因为它们在我的 js 文件中可见,并且只需使用一些假数据重新创建 Parse 对象,然后将其存储在我的数据库中?
ACL 在这种特殊情况下不是重点 - 现在我只是在保存之前打开写 acl,以防止用户在保存之前更改他们的分数。
在我的游戏中,我没有任何 Parse 用户 - 我希望所有人都玩我的游戏,而无需登录。
您如何看待让 'fake' 用户喜欢这篇文章的第一个答案(因为无法在 JS 解析 SDK 中创建匿名匿名),然后跟踪会话和用户?
这对我有帮助吗?
也许我应该在保存到 Parse 之前检查 Cloude Code - 比如比较 Cookie 或本地存储数据(这会使游戏中的作弊变得更加困难,但仍有可能)?
下面我将展示我的整个服务,向您展示所有内容:
angular.module('Parsedb', [])
.provider('Parsedbmanager', function() {
this.$get = function($q, $http) {
// new Parse constructor
var ParseHighScore = Parse.Object.extend('ParseHighScore');
// create new obj
var parseHighScore = new ParseHighScore();
this.parseInit = function() {
Parse.initialize('myKey', 'myKey');
};
this.setParsedb = function(newScore) {
// set val
parseHighScore.set('HighScore', newScore);
// save score to cloud
parseHighScore.save(null, {
success: function (parseHighScore) {
// protect from change saved obj
var acl = new Parse.ACL();
acl.setPublicReadAccess(true);
acl.setPublicWriteAccess(false);
parseHighScore.setACL(acl);
return parseHighScore.save();
},
error: function (parseHighScore, error) {
console.log('Failed to create new object, with error code: ' + error.message);
}
});
};
this.getParsedb = function() {
// need q to get this asynch
var deferred = $q.defer();
var query = new Parse.Query(ParseHighScore);
query.limit(5);
query.descending("HighScore");
query.find({
success: function(results) {
console.log("Successfully retrieved " + results.length + " scores.");
// resolve, if you have results
deferred.resolve(results);
},
error: function(error) {
deferred.reject(error.message);
}
});
return deferred.promise;
};
return this;
};
});
【问题讨论】:
标签: javascript angularjs parse-platform service