【问题标题】:reactJs secure storagereactJs 安全存储
【发布时间】:2022-01-12 07:44:33
【问题描述】:

我是一名后端开发人员,在当前项目中也必须创建前端! 我正在使用 reactJs,我知道为了授权用户,我应该从我的后端 API 获得 api_token,然后在下一个请求中使用 api_token!所以我应该存储api_token(实际上是在客户端浏览器的某个地方)!但是我应该将它存储在哪里以确保安全?

我想到的第一个答案是“本地存储”!但我读过这篇文章:Don't store tokens in local storage

我已经搜索并找到了@auth0/auth0-spa-js,但我不知道我是否可以信任这个包(和类似的包)?

这些是我找到的方法!但是像这样存储敏感数据的正确方法是什么?

【问题讨论】:

  • 在 cookie 中存储令牌是更好的解决方案。 react-native-secure-storage 是 react-native 包不适用于 Web 应用程序。

标签: reactjs security local-storage client-side


【解决方案1】:

Auth Flow 应该在 Web 上应该是

  1. 将用户/密码详细信息发送到服务器
  2. 服务器验证并返回包含一些详细信息的加密令牌,并将其存储为 HTTP Cookie
  3. 设置受保护的端点,以便只有拥有令牌的用户才能访问它们

安全性:HTTP Cookie 仅意味着浏览器无法在客户端访问它,只有服务器。但是有人可以简单地将其复制粘贴到他们的 cookie 中,如果您担心或处理敏感内容,您将需要实施额外的安全措施,例如提到的那些。 通常,设备管理不是网络问题,但您也可以对令牌进行一些验证,例如使令牌在 5 分钟内过期,或在会话结束时过期、DeviceId、浏览器 ID、IP 地址,向他们发送一封新的电子邮件未知IP登录等。

【讨论】:

    【解决方案2】:

    永远不要在前端代码中存储私有令牌

    您应该创建一个只能从特定 url(您的应用程序的 url)访问的服务器。该服务器可以拥有您拨打电话所需的秘密令牌。该服务器可以将请求转发到您将使用的需要私有令牌的服务。

    【讨论】:

    • 我听不懂!你能解释一下吗
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 2021-05-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2014-07-08
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多