在 Anypic 示例项目中合并 类
Combining classes in Anypic example project
我专门研究了 Anypic tutorial 和数据模型部分,因为我想构建一个类似的应用程序。我的问题是为什么我不能删除权限限制并让图像 class 保存喜欢(int)和评论(字符串数组)并且不允许应用程序的用户编辑其他用户的图像.这种方法的缺点是什么?
谢谢
权限限制是为了安全。
通过将 likes
与 Photo
class 分开,可以防止其他用户修改其他人的照片。解析 ACL(访问控制列表)的工作方式是限制 read/write 访问。
让我们考虑 likes
包含在 Photo
class 中的情况。如果一个用户想给别人的照片点赞,他们将不得不直接修改用户的照片,这需要 ACL 中的写权限。
没什么大不了的,对吧?错误的。怀有恶意的人可以构建他们自己的 REST API 调用您的应用程序,并对其他人的照片执行他们想要的任何操作。我可以远程修改或删除你的照片,欺骗额外的喜欢,以及大量其他漏洞利用,具体取决于你应用程序的其余部分。
如果您仍想将 likes
保留在 Photo
class 中,但没有 public 写入权限,那么每当有人尝试为照片点赞时,您将不得不使用主密钥执行写入云代码。您还需要事先进行额外的验证,这样其他人就无法欺骗此请求。
解析 ACL 很棒,因为它们非常简单,并且可以让您根据需要在应用程序中快速划分 read/write 访问权限。
我专门研究了 Anypic tutorial 和数据模型部分,因为我想构建一个类似的应用程序。我的问题是为什么我不能删除权限限制并让图像 class 保存喜欢(int)和评论(字符串数组)并且不允许应用程序的用户编辑其他用户的图像.这种方法的缺点是什么?
谢谢
权限限制是为了安全。
通过将 likes
与 Photo
class 分开,可以防止其他用户修改其他人的照片。解析 ACL(访问控制列表)的工作方式是限制 read/write 访问。
让我们考虑 likes
包含在 Photo
class 中的情况。如果一个用户想给别人的照片点赞,他们将不得不直接修改用户的照片,这需要 ACL 中的写权限。
没什么大不了的,对吧?错误的。怀有恶意的人可以构建他们自己的 REST API 调用您的应用程序,并对其他人的照片执行他们想要的任何操作。我可以远程修改或删除你的照片,欺骗额外的喜欢,以及大量其他漏洞利用,具体取决于你应用程序的其余部分。
如果您仍想将 likes
保留在 Photo
class 中,但没有 public 写入权限,那么每当有人尝试为照片点赞时,您将不得不使用主密钥执行写入云代码。您还需要事先进行额外的验证,这样其他人就无法欺骗此请求。
解析 ACL 很棒,因为它们非常简单,并且可以让您根据需要在应用程序中快速划分 read/write 访问权限。