在客户端或服务器端处理Angular的服务?

时间:2018-05-31 09:15:29

标签: angular firebase google-cloud-firestore

假设我主持并使用Firebase Hosting为我的Angular提供服务,并使用Angular'services为我的Firebase FunctionsFirestoreFirebase Authentication调用API。< / p>

我想知道Angular中的代码或已处理数据是否有可能泄漏:

1)如果我在服务中硬编码了我的API密钥,那么泄漏我的API密钥是否会导致安全漏洞?

2)从Firestore到Angular Services的数据以及服务中处理的数据是在服务器端还是客户端处理的?

谢谢。

1 个答案:

答案 0 :(得分:2)

回答问题1 / 您的API密钥将是“公开的”,但这不是问题,请参阅此“着名”答案Is it safe to expose Firebase apiKey to the public?。所以没有“安全漏洞”。

回答问题2 / 您的Angular服务是在客户端执行的,因此您从Firestore获取的数据将在客户端进行处理。 Firebase Hosting的作用只是在需要时(即客户端请求)将Angular文件发送到客户端。

这意味着您应该向Firestore数据库添加一些安全规则(并相应地构建查询),以便仅向客户端发送他/她可以读取的数据。这些安全规则是身份验证/授权机制的授权部分,而Firebase身份验证将是第一部分。您可以阅读有关Firestore安全规则here的文档(请注意它们与API密钥完全不同),以及Firebase身份验证here

最后请注意,使用Firebase时,在后端(即服务器端)运行的代码中唯一的部分是您为Cloud Functions编写的代码。因此,如果您从Angular应用程序调用云函数(例如HTTPS可调用函数或HTTP请求),则此函数的代码将在服务器端执行 ,并且仅执行结果数据将被发送回Angular应用程序(客户端)。