使用parse.com实现云功能的安全性

Security with cloud functions using parse.com

本文关键字:功能 安全性 实现 parse com 使用      更新时间:2023-09-26

我正在使用parse.com,并致力于使我的应用程序安全。我想我已经很好地理解了ACL、CLP和云功能的基本原理。我的主要问题来自parse.com博客的第四部分。。通过使用云功能,我应该保护我的应用程序,但是什么阻止了有人多次调用此云功能?示例是云中的以下定义:

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关系(它的行为有点像一个高性能列表),可以跟踪他到目前为止喜欢的照片。每次他喜欢一张照片时,你都会浏览这个列表,如果照片不在其中,你会将该照片添加到这个关系中,然后增加照片的"赞"计数器。当他不喜欢这张照片时,你的表现正好相反。这样,你的应用程序不仅可以可靠地扩展,你的计数器也不会被恶意用户滥用。