【问题标题】:Retrieving user data securely when user authenticates在用户进行身份验证时安全地检索用户数据
【发布时间】:2019-01-05 11:42:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: node.js security vue.js login firebase-authentication


    【解决方案1】:

    您无法采取任何措施来阻止客户端 DOM 操作。如果它可以通过 JavaScript 访问,那么用户就可以访问它。由您来实现您的应用程序,以使敏感信息和/或功能不依赖于客户端安全性(如果确实存在这种情况)。

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

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

    【讨论】:

    • 您认为 SSR(服务器端渲染)可以提高安全性吗?这样客户端就只是一个哑终端
    • 同样的原则也适用于 SSR。最后,无论应用程序是在浏览器中呈现还是通过服务器呈现,用户都可以访问 DOM。 SSR 和安全性的好处是您能够在不暴露于外界的情况下处理部分流程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多