我们的 React 应用程序使用 Firebase JS SDK。整个登录流程非常出色且安全。使用 Firebase 用来交换代码和不交换代码的中间件身份验证域处理程序。
但是,经过身份验证后,SDK 会将 Web API 密钥、刷新令牌以及所有其他会话凭据和用户数据保存在浏览器的 IndexDB 中。从技术上讲,任何人都可以手动获取这些凭据(或使用在打开网页的上下文中运行的抓取脚本)
我认为 Firebase 拥有的唯一保护是它只允许来自该客户端的注册来源的特定
client_id
请求。幸运的是,Origin 是唯一无法以编程方式设置或修改的 HTTP 标头之一。
OAuth 指南不鼓励所有这些吗?由于大公司和 SDK 将凭据存储在浏览器存储中,这对于流畅的用户体验来说是一个可接受的漏洞吗?
API 密钥不是 OAuth 规范的一部分。如果您有 API 密钥来访问资源服务器上受保护的资源,则不需要 OAuth。
OAuth 用于代表用户访问受保护的资源。 OAuth中的“Auth”指的是授权。例如,用户需要授权客户端(您的应用程序)访问他们的数据或代表他们执行操作。
我不确定您在谈论运行脚本,因为您访问了网页上的页面。是的,如果脚本在您的计算机上运行,浏览器存储不会提供任何需要访问它们的活动机制。
它可以被加密然后存储,只要您的应用程序不需要任何这些信息,这将使其更加安全。否则,您需要将加密密钥或其他内容存储在您的水疗中心中。使用该应用程序的任何人都可以访问同一个密钥。但对于您提到的那些,只有特定的用户和来自特定的来源对于 SPA 来说是相当安全的。