安全-Security

随着应用程序开发的进行,您将需要使用Parse的安全功能来保护数据。本文档介绍了如何保护应用程序。

如果您的应用程序遭到入侵,那么您的应用程序不仅仅是您的开发人员,而且还可能是您的应用程序的用户。在将您的应用程序发布到野外之前,继续阅读我们关于明智的默认和预防措施的建议。

Client vs. Server

当应用程序首次连接到Parse时,它会使用应用程序ID和客户端密钥(或REST密钥,或.NET密钥或JavaScript密钥)来识别自己,具体取决于您使用的平台。这些不是秘密的,而且他们自己也不能保护应用程序。这些密钥是作为您的应用程序的一部分发送的,任何人都可以从其设备反编译您的应用或代理网络流量,以查找您的客户端密钥。这个漏洞利用JavaScript更容易 - 可以在浏览器中简单地“查看源代码”,并立即找到您的客户端密钥。

这就是为什么Parse有许多其他安全功能来帮助您保护数据。客户端密钥给予您的用户,所以只要客户端密钥可以完成的任何事情都可以由公众,甚至是恶意黑客进行。

另一方面,主密钥绝对是一种安全机制。使用主键可以绕过所有应用程序的安全机制,例如类级权限和ACL。拥有主密钥就像对您的应用程序的服务器进行root访问,并且您应该以与保护您的生产计算机的root密码相同的热情来保护您的主密钥。

整体理念是限制客户的功能(使用客户端密钥),并执行需要云密码中的主密钥的任何敏感操作。您将在“云代码中实施业务逻辑”一节中学习如何最大限度地利用此功能。

最后一个注意事项:建议您在服务器中设置HTTPS和SSL,以避免中间人攻击,但是Parse也可以非HTTPS连接。

Class-Level Permissions

第二级安全性是在模式和数据级别。执行此级别的安全措施将限制客户端应用程序在Parse中如何以及何时访问和创建数据。当您第一次开始开发Parse应用程序时,所有默认设置都将被设置为使您成为一个更有成效的开发人员。例如:

  • 客户端应用程序可以在Parse上创建新的类
  • 客户端应用程序可以向类添加字段
  • 客户端应用程序可以修改或查询Parse上的对象

您可以将任何这些权限配置为适用于所有人,任何人,或应用于您的应用中的特定用户或角色。角色是包含用户或其他角色的组,您可以将其分配给对象以限制其使用。任何授予角色的权限也会授予其任何子项,无论是用户还是其他角色,都可以为应用创建访问层次结构。每个Parse指南包括在应用程序中使用角色的详细说明。
一旦您确信您的应用程序中的类之间具有正确的类和关系,您应该开始通过执行以下操作来将其锁定:
几乎你创建的每个类都应该在某种程度上调整这些权限。对于每个对象具有相同权限的类,级别设置将最有效。例如,一个常见的用例需要一个静态数据类,任何人都可以读取,而不是由任何人写。

限制创建新的类-RESTRICTING CLASS CREATION

首先,您可以配置应用程序,以便客户端无法在Parse上创建新类。这通过在ParseServer配置中将键allowClientClassCreation设置为false来实现。有关配置ParseServer的概述,请参阅官方配置文档。一旦受到限制,类只能从数据浏览器或masterKey创建。这将防止攻击者使用无限制的任意新类填充数据库。

设置类级权限-CONFIGURING CLASS-LEVEL PERMISSIONS

Parse让您指定每个类允许的操作。这允许您限制客户端访问或修改类的方式。要更改这些设置,请转到数据浏览器,选择一个类,然后单击“安全”按钮。
您可以配置客户端对所选类执行以下每个操作的能力:

  • Read:
    • Get: 获取权限后,如果用户知道他们的objectIds,用户可以在该表中获取对象。
    • Find: 任何具有查找权限的人都可以查询表中的所有对象,即使他们不知道他们的objectIds。任何具有公共查找权限的表都将被公众完全阅读,除非您将ACL放在每个对象上
  • Write:
    • Update: 具有更新权限的任何人都可以修改表中没有ACL的任何对象的字段。对于公开可读的数据,如游戏级别或资产,您应该禁用此权限。
    • Create: 像Update一样,任何拥有“创建”权限的人都可以创建一个类的新对象。与更新权限一样,您可能希望将其关闭以供公开可读的数据。
    • Delete: 有了这个权限,人们可以删除表中没有ACL的任何对象。他们需要的只是它的objectId。
  • Add fileds: Parse类具有在创建对象时自动添加的模式。在开发应用程序时,这是非常好的,因为您可以向对象添加一个新的字段,而不必对后端进行任何更改。但一旦你发布你的应用程序,很少需要自动添加新的字段到你的类。当您将应用程序发布时,您应该几乎总是关闭所有类的此权限。

对于上述每个操作,您都可以向所有用户(默认值)授予权限,也可以将权限锁定到角色和用户列表。例如,所有用户都可以使用的类只能通过启用get和find来设置为只读。可以通过只允许创建将记录类设置为只写。您可以通过向特定的一组用户或角色提供更新和删除访问来启用用户生成内容的审核。

results matching ""

    No results matching ""