使用 Firestore 和 Android 时,如果我们想将数据模型存储在一个地方,我们可以存储它:
在 XML 中:
<string name="collection_users">users</string>
<string name="user_first_name">first</string>
<string name="user_last_name">last</string>
<string name="user_year_birth">born</string>
或者直接在Java中:
public static final String COLLECTION_USERS = "users";
public static final String FIELD_FIRST_NAME = "first";
public static final String FIELD_LAST_NAME = "last";
public static final String FIELD_YEAR_BIRTH = "born";
但是,在这两种情况下,我们都会在客户端代码中公开数据库的整个数据模型,从而使攻击者的工作更容易,以防他们以某种方式掌握应用程序的源代码。在使用 Firestore 等 No-SQL 数据库时,是否有任何好的做法或建议的方法可以最大程度地减少客户端代码中数据库结构的暴露?
在使用 Firestore 等 No-SQL 数据库时,是否有任何好的做法或建议的方法来最大程度地减少数据库结构的暴露?
当然可以,请使用 Firestore 安全规则,以便您可以根据需要保护数据库。为此,我建议您阅读有关开始使用Cloud Firestore安全规则的官方文档。
安全规则以简单而富有表现力的格式提供访问控制和数据验证。要构建基于用户和角色的访问系统来确保用户数据的安全,您需要将 Firebase 身份验证与 Cloud Firestore 安全规则结合使用。
由于无法阻止公开数据库结构,因此集合/文档的名称应显式存在于代码中,以便可以在引用中使用它们。但只要您正确保护数据库,这就不会成为问题。你可以移动一些逻辑(如果可能的话)服务器端,将是一个不错的选择。
如果需要,您也可以尝试将这些名称存储在本地数据库中并对其进行加密,但在我看来,这样做没有任何好处。由您选择是否需要某种加密。