【问题标题】:Parse.com - secure sending data with javascript SDKParse.com - 使用 javascript SDK 安全发送数据
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • “来自用户的抽象”是什么意思?
    • 你不让他们明白你在做什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多