将 Parse Server 缩减为仅 Parse Cloud

Reducing Parse Server to only Parse Cloud

我目前正在使用最新的自托管 Parse Server,但我面临一些安全问题。

目前,对路由 /classes 的调用可以检索任何 table 中的任何对象,即使我 可能想要 一个对象public 可读,我不想显示该对象的所有参数。简而言之,我不希望在任何情况下检索数据库,我想禁用 "everything" 除了 Parse Cloud 代码。也就是说,我可以 运行 调用我自己的函数,但不能使用客户端(Android、iOS、C#、Javascript...)检索数据。

有什么办法吗?我一直在深入搜索,试图调试一些控制器,但我没有任何线索。

非常感谢您。

tl;dr:将所有对象的 ACL 设置为仅在使用主密钥时可读,然后告诉 Cloud Code 中的查询在查询数据时使用 MK

因此,在不更改 Parse Server 本身的情况下,您可以使用 ACL 并仅允许特定用户访问对象。然后,您将 "login" 作为 Cloud Code 中的该用户并能够访问所有对象。

作为旧方法,Parse.Cloud.useMasterKey() 在 OS Parse Server 中不可用,您必须将参数 useMasterKey 传递给您正在 运行 的查询这应该可以解决此特定请求并将绕过 ACL/CLP。 Parse Server 的 Wiki 中也有一个示例。

为方便起见,这里有一段来自 Wiki 的简短代码示例:

Parse.Cloud.define('getTotalMessageCount', function(request, response) {
    var query = new Parse.Query('Messages');
    query.count({
        useMasterKey: true
    }) // count() will use the master key to bypass ACLs
    .then(function(count) {
        response.success(count);
    });
});