我正在使用parse.com并着眼于确保我的应用安全。我想我已经很好地理解了ACL,CLP和Cloud功能的基本原理。我的主要问题来自the Part IV of the parse.com blog.。通过使用云功能,我应该保护我的应用程序,但是什么阻止有人多次调用此云功能? 示例是云中的以下定义:
1 = {0}
这应该在我的JS代码中用作:
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);
});
});
现在,如果有人看了我的代码,他会很快理解发生了什么,只是多次调用/运行这个云函数,并且帖子上的喜欢会提升。这在这里没什么大不了的,但是这可能导致我相信更复杂的应用程序中的安全漏洞?
答案 0 :(得分:0)
在幕后,Parse肯定有适当的负载平衡措施来限制来自单一来源的连续请求,通常是为了提高服务质量以及检测和防止DDos攻击。
您可以使用优秀的设计来防止您提供的方案。对于处理来自单个用户的多个喜欢,您可以限制用户只能使用一次。一般情况下,您不允许任何人直接操纵您的计数器,只能作为用户操作的副产品来增加/减少此计数器。
让我们说用户喜欢你应用中的照片。在您的数据库中,每个用户对象都有Like
关系(有点像高性能列表),可以跟踪到目前为止他喜欢的照片。每当他喜欢一张照片时,你都要浏览这个列表,如果照片不在那里,你可以将这张照片添加到这个关系中,然后将照片放到照片中。当他不喜欢这张照片时,你会表现相反。这样,不仅您的应用可以可靠地扩展,您的计数器也不会被恶意用户滥用。