我目前正在使用自托管解析服务器,但我面临一些安全问题。
目前,对路由/classes
的调用可以检索任何表中的任何对象,即使我可能希望一个对象公共可读,我不想显示该对象的所有参数。简单地说,我不想在任何情况下检索数据库,我想禁用"所有内容"除了Parse Cloud代码。这就是说,我可以运行自己的函数调用,但不能使用客户端(Android,iOS,C#,Javascript ......)来检索数据。
有没有办法做到这一点?我一直在深入研究这个问题,尝试调试一些控制器,但我没有任何线索。
非常感谢你。
答案 0 :(得分:1)
tl; dr:将所有对象的ACL设置为仅在使用主密钥时可读,然后告知Cloud Code中的查询在查询数据时使用MK
因此,在不更改Parse Server本身的情况下,您可以使用ACL并仅允许特定用户访问对象。然后,您将在“Cloud Code”中以“该用户”身份“登录”,并能够访问所有对象。
作为旧方法,操作系统分析服务器中没有Parse.Cloud.useMasterKey()
,您必须将参数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);
});
});