Parse.com - 使用javascript SDK安全发送数据

时间:2015-12-23 17:33:17

标签: javascript angularjs parse-platform service

我正在建立一个简单的游戏,将Angular JS和Parse.com云作为我的数据库。

我的目标是在游戏和游戏中,将用户分数存储在Parse云中。

但是,如果有人可以访问我的Parse密钥,那么我怎么能这样做呢,因为它们在我的js文件中可见,只是用一些假数据重新创建Parse对象,然后将它存储在我的数据库中?

ACL在这种特殊情况下不是重点 - 现在我只是在保存之前转向写入acl,以防止用户在保存之前更改它们的分数。

在我的游戏中,我没有任何Parse用户 - 我希望所有人都可以在没有登录的情况下玩我的游戏。

您如何看待在这篇文章的第一个回答中使用'fake'用户的想法(因为匿名匿名无法在JS解析SDK中创建),然后跟踪会话和用户?

在我的情况下它是否有帮助?

也许我应该在Cloude Code中进行一些检查 - 比如在保存Parse之前比较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;
  };

});

1 个答案:

答案 0 :(得分:0)

如果你让用户写入db,那么总会有用户可以改变数据的情况..我认为你所能做的就是从用户那里抽象出来