在用户进行身份验证时安全地检索用户数据

Retrieving user data securely when user authenticates

在花了一些时间阅读有关身份验证的内容并注意到很难做好之后,我决定使用 firebase-authentication 在我的 vue 应用程序中对我的用户进行身份验证。

我列出了我在此应用程序中使用的技术和流程,以显示每个部分的交互并进行清理:

  1. 我为我的客户使用 Vue javascript 客户
  2. 客户端登录用户使用firebase-authentication。
  3. 当用户登录时,调用 node.js rest api 完成并检索 json 及其用户数据。
  4. 当客户端检索数据时,应用会根据用户权限显示某些部分并隐藏其他部分

因此,在我的 Vue 应用程序中,我显示了一个自定义登录表单并使用它通过 firebase 对用户进行身份验证。用户登录后,我从我自己的服务器(只是一个 json 具有不同的用户配置值)检索一些数据,这些数据定义了用户如何与应用程序交互(例如,他可以或不能做什么)在我的应用程序中执行)。

我如何检索此信息并以安全的方式在我的客户端应用程序中使用它?。我的意思是,举个例子,假设我在 JSON 中有一条信息定义了用户是普通用户还是管理员用户。如何避免用户修改服务器的响应并提升权限?

您无法采取任何措施来防止客户端 DOM 操纵。如果它可以通过 JavaScript 访问,则用户可以访问它。是否以敏感信息 and/or 功能不依赖于客户端安全性(如果确实存在这种情况)的方式实施应用程序取决于您。

您可以做的是防止对服务器进行未经授权的访问。这是定义范围、ACL 等的目的。如果精明的用户确实修改了响应数据,例如,将他们的角色从 user 更改为 admin,您的响应不应包含任何针对管理员的内容仅限用户。相反,只有在 进行成功的 API 调用后,您的服务器代码才能访问该信息 authenticated/authorized 请求。

从不 在安全方面信任客户。这必须在服务器上完成。