Parse _User表上的CLP有什么作用?

时间:2015-10-22 21:54:40

标签: javascript security parse-platform

Parse.com JS documentation声明:

  

默认情况下,Parse.User类是安全的。存储在Parse.User中的数据只能由该用户修改。默认情况下,任何客户端仍可读取数据。因此,一些Parse.User对象被认证并且可以被修改,而其他对象是只读的。

     

具体来说,除非使用经过身份验证的方法(如logIn或signUp)获取Parse.User,否则无法调用任何保存或删除方法。这可确保只有用户才能更改自己的数据。

默认情况下,_User表旁边有ReadWrite旁边的复选标记。果然,快速测试显示我可以查询和获取其他用户'数据,但我不能修改它。

我认为这是正确的

  1. _User表是特殊的,不遵循传统的CLP规则吗?
  2. 取消选中Write的唯一影响是阻止用户编辑自己?
  3. 要保护_User表中的数据,仅仅取消选中Read就足够了吗?
  4. enter image description here

2 个答案:

答案 0 :(得分:2)

1 - 是的,User类的行为略有不同。阅读文档中的安全边缘案例部分。

2 - 不,它也会禁用创建权限,这意味着没有用户可以注册或更新其数据。

3 - 取决于这里的安全意味着什么。用户类默认是写保护的,因此用户不能互相写入数据。但是,他们可以搜索和阅读彼此的数据。要避免此禁用查找权限。删除权限也最好被勾选。

确保结帐高级安全性标签以查看所有权限,而不是仅读取/写入

答案 1 :(得分:1)

点击那个小装备并将开关移到高级,你会看到更多选项。

还有一个ACL,它附加到每个对象。我记得在其中一个Parse指南上看到一个流程图,首先显示一个对象的请求必须通过CLP,然后才能接受ACL。因此,如果它失败了CLP,它将不会通过ACL,即使它已设置。但是,我认为在实践中我发现不是真的,你必须要测试一下。

默认情况下,_User CLP设置不同,以便其他用户无法互相写入数据。如果您愿意,可以更改,但不建议。为了从当前用户更改另一个用户的值,您可以调用调用Parse.Cloud.useMasterKey();的云函数,该函数绕过所有ACL和CLP。请注意,这不能在beforeSave触发器中使用,我想在beforeDelete触发器。

当您扩展到高级设置时,您会注意到read具有get and find选项。获取意味着如果您知道对象ID,则可以获取该对象。查找意味着如果您创建查询,它可以在不知道特定objectId的情况下由查询返回。对于Write,您可以创建,更新和删除。如果选中了create但没有更新,则可以从客户端创建对象,并在最初保存之前设置任何初始参数 。进行第一次保存后,如果没有masterKey,您将无法更新该对象。删除应该是自我解释的。

希望有所帮助。如果您想要澄清任何内容,请告诉我。