Javascript 使用parse.com的云函数的安全性

Javascript 使用parse.com的云函数的安全性,javascript,security,parse-platform,Javascript,Security,Parse Platform,我正在parse.com网站上工作,希望让我的应用程序更安全。我想我已经很好地理解了ACL、CLP和云功能的基本原理。我的主要问题来自。通过使用云功能,我应该保护我的应用程序的安全,但有什么阻止人们多次调用此云功能呢? 示例如下所示:在云中定义: Parse.Cloud.define("like", function(request, response) { var post = new Parse.Object("Post"); post.id = request.params.pos

我正在parse.com网站上工作,希望让我的应用程序更安全。我想我已经很好地理解了ACL、CLP和云功能的基本原理。我的主要问题来自。通过使用云功能,我应该保护我的应用程序的安全,但有什么阻止人们多次调用此云功能呢? 示例如下所示:在云中定义:

Parse.Cloud.define("like", function(request, response) {
  var post = new Parse.Object("Post");
  post.id = request.params.postId;
  post.increment("likes");
  post.save(null, { useMasterKey: true }).then(function() {
    response.success();
  }, function(error) {
    response.error(error);
  });
});
这应该在我的JS代码中用作:

 Parse.Cloud.run('like', {postId : theIdOfMyPost}).then(function(results){
        // ok
    }, function(err) {
      console.log(err);
    });

现在,如果有人看了我的代码,他会很快明白发生了什么,只要多次调用/运行这个云函数,帖子上的赞就会提高。这并不是什么大问题,但我相信这可能会导致更复杂的应用程序出现安全漏洞

在幕后,Parse肯定有负载平衡措施来限制来自单一来源的连续请求,通常是为了提高服务质量以及检测和防止DDos攻击

您提供的场景可以通过良好的设计来避免。对于处理来自单个用户的多个喜欢,您限制用户只能喜欢某个东西一次。通常情况下,您不允许任何人直接操作您的计数器,并且仅作为用户操作的副产品来增加/减少此计数器


假设用户喜欢应用程序中的照片。在您的数据库中,每个用户对象都有一个
Like
关系(其行为有点像一个高性能列表),可以跟踪到目前为止他喜欢的照片。每次他喜欢一张照片时,你都会浏览这个列表,如果照片不在列表中,你会将照片添加到这个关系中,然后打开照片的类似计数器。当他不喜欢这张照片时,你的表现正好相反。这样不仅你的应用程序可以可靠地扩展,你的计数器也不会被恶意用户滥用

好的,我知道我不会直接增加一个计数器,这只是其他事情的结果。此外,我可以跟踪哪个IdUser喜欢哪个photoId,但这意味着每次有人喜欢照片时,我都需要检查这个链接。如果恶意用户调用云函数数千次,即使不会增加计数器,也会进行此关系检查。因此,这可能会导致数以百万计的请求。对于每个修改/添加调用,我需要进行一种检查,以确保操作合法,这是处理此问题的最佳方法吗?如果您没有严格的安全要求,我认为最好的方法是避免对基于假设的恶意用户不存在的瓶颈进行任何过早的优化。我不是说你应该忽略它,它不会发生,但最好是花时间开发一个更好的应用。你可以通过保留时间戳迫使用户每秒只喜欢一次某个东西,但我把这留给开发的后期阶段,当你有证据表明你的功能被利用时。这是有道理的根据我们的想法,再次感谢您的专业知识。