在会话/历史reactjs中存储用户数据是不是安全

Posted

技术标签:

【中文标题】在会话/历史reactjs中存储用户数据是不是安全【英文标题】:is it safe to store users data in the session/history reactjs在会话/历史reactjs中存储用户数据是否安全 【发布时间】:2021-03-13 17:04:07 【问题描述】:

我从一位老开发人员那里接手了这个 React 应用程序,我对 React 的工作方式不是很熟悉,但在我的生活中,我从来没有将用户的数据存储在会话的历史记录中。我注意到他正在这样做,这让我有点害怕:

const 
        history,
       = this.props

      AuthorizationHome.doCreateUserWithEmailAndPassword(email, passwordOne)
        .then((authUser) => facades.userFacade().doCreateUser(authUser.user.uid, email, name, companyName))
        .then(() => 
          history.push(routes.HOME)
        )

这样做真的安全吗,还是我应该存储在数据库中并在每次需要时查询数据?我总是要么将用户的数据存储在数据库中并通过我的服务器端代码进行查询,要么将数据传递到我的后端并在那里安全地操作它。请告诉我!

【问题讨论】:

【参考方案1】:

它基于您从事的类型项目。如果是银行业务或处理任何敏感数据和公共使用应用程序,请避免在页面登录中保存密码。最好根据项目需求进行用户认证会话。

【讨论】:

它会注册用户数据,例如姓名、电子邮件、电话号码、公司名称、帐户密码等……您还认为这会是一个问题吗? 不要认为这样存储它是个好主意。如果你必须存储它,至少要加密它。如果管理不善,日志可能会损害用户群。【参考方案2】:

是的,只要页面没有被导航或路由到与其他数据相同的页面,这些数据就会保持不变。

【讨论】:

【参考方案3】:

不,这不安全,就像有人可以访问客户的计算机一样,他们可以检索凭据并可能终身访问他们的帐户。 即使加密,在本地存储用户名和密码也不好。

您可以做的是使用短期令牌实现 JWT,然后对其进行加密并将它们存储在本地(或使用基于 cookie 的 jwts,但要注意 csrf 漏洞利用)。这样,如果客户的令牌被盗,令牌可能会在一段时间后过期,或者如果您检测到它们已被盗用,则无需客户更改密码即可撤销令牌。

您还可以要求用户提供用于加密和在本地存储其凭据的 pin,然后当他们打开新页面/会话时,要求他们使用它来解密存储的数据。我建议不要这样做,因为客户可以使用简单的密码,例如 1-2-3-4,而不是让他们使用更长的密码/密码,只需让他们直接重新输入密码

【讨论】:

有道理。我只是在寻找最好、最简单的方法,所以我认为查询我的数据库是完美的。感谢您的回答

以上是关于在会话/历史reactjs中存储用户数据是不是安全的主要内容,如果未能解决你的问题,请参考以下文章

这对于用户登录和验证是不是足够安全? (PHP、MySQL、会话)

将敏感数据存储在本地存储或会话存储中是不是安全? Localstorage 允许对敏感数据进行任何攻击

如何在 Angular 8 中存储 jwt 令牌之类的数据?是不是有另一种使用本地存储或会话存储安全存储的方法?

站点用户可以更改 cookie 或会话数据吗?

在注销期间破坏用户会话是不是足够?

会话存储可以安全吗?