【问题标题】:React js and flux user store securityReact js 和 Flux 用户存储安全性
【发布时间】:2015-07-22 02:02:21
【问题描述】:

我很关心如何在 React 应用程序中使用不同的角色。 假设用户尝试登录并将用户名、密码发送到服务器。 如果用户已登录,他/她将在应用程序中拥有不同的角色,如管理员、用户等。

{
   "_id" : 8937493874398,
   "role" : "user"
}

将其保存在 Flux 商店中是否安全?用户可以在 javascript 控制台或类似的地方更改角色吗?

处理这个问题的正确方法是什么?我们希望对具有角色的用户隐藏应用程序的某些部分:用户并允许角色:管理员的事情

【问题讨论】:

  • 不应信任客户端的任何内容。我认为您不想隐藏应用程序的某些部分,您想隐藏这些部分公开的功能或数据,这一切都应该远离客户端。所以,如果我能够将我的角色从“用户”更改为“精英超级管理员”,我可以看到精英超级管理员界面,但无论它试图获取的任何数据都会被任何 api 锁定你呼唤。
  • 是的,我会阻止在服务器端采取行动。但在某些情况下,我绝对不想为未经授权的用户展示功能。也许他们没有付钱等等。我以前没有构建过 SPA 应用程序,我找不到一个很好的解决方案。 @Crob
  • 我同意克罗布的观点。如果您的应用程序需要基于身份验证级别的界面中的重要限制,则 SPA 可能不是最佳解决方案。您可以对服务器进行频繁的身份验证调用以确保客户端具有正确的角色,但正如 Crob 所说:客户端上的任何内容都不应该被信任。如果用户足够聪明,可以从控制台更改通量存储,那么为用户公开无用的管理界面不会是您最大的安全问题。
  • 好的,所以解决方案是不使用 AngularJS、React 或任何其他前端库来解决此类问题?我的印象是,现在使用的大多数 SPA 应用程序都处理某种角色、组等。
  • 这不是我要说的。但是您必须习惯于认为您发送给客户端的所有内容都可以访问。如果 javascript 源代码包含暴露公司机密的 React/DOM 代码,那么您就有问题了。

标签: javascript reactjs reactjs-flux


【解决方案1】:

不,这不“安全”。您在客户端发送/存储的所有内容都可以访问和修改。

您可以将登录功能与 React 应用程序分开。因此,在用户使用标准请求/响应设置登录后,您可以根据用户在服务器上的身份验证级别返回 React 组件。

【讨论】:

    【解决方案2】:

    看看你的场景,我认为你应该有两个不同的反应应用程序,一个用于普通用户,另一个用于管理员/受限用户。

    【讨论】:

      猜你喜欢
      • 2015-01-29
      • 1970-01-01
      • 2014-11-17
      • 2014-06-03
      • 2015-12-19
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2015-05-31
      相关资源
      最近更新 更多