【问题标题】:What are the security risks of passing an authentication token in react using props?使用 props 在 react 中传递身份验证令牌有哪些安全风险?
【发布时间】:2020-03-15 05:52:23
【问题描述】:

我正在使用基于类的组件构建一个反应应用程序,并希望在道具中传递一个身份验证令牌。连接到我的浏览器的外部人员可以获取令牌并开始使用它吗?

如果这似乎是一个非常基本的问题,我深表歉意!

【问题讨论】:

    标签: reactjs authentication react-props react-component


    【解决方案1】:

    没有问题,您应该关注的是令牌内部没有敏感信息,因为它可以被“任何人”“抓取”和“看到”(某些攻击可能能够获取令牌,没关系只要它受到良好保护,例如,这意味着令牌过期并且没有敏感信息)

    【讨论】:

    • 令牌中可能包含哪些类型的敏感信息?我想会话开始和结束时间可能在一个令牌中,这会将用户绑定到那个时间的特定位置?另外,如果有人在我会话中途使用我的令牌来“背负”我的会话怎么办?
    • 这是可能的,但前提是他们有权访问您的令牌(例如:您正在遭受攻击)您不应该拥有的是用户密码(用户 ID 通常很好)基本上任何您不知道的信息'不想公开不应出现在令牌中。
    • 好吧,我们是在一个用于卫星通信的网络应用程序的上下文中 - 很可能有人会尝试各种可能的方式来访问其他人的用户会话 - 你的想法是什么?
    • 老实说,这取决于用户是否安全地使用应用程序而不是使用外部脚本,请查看多米尼克关于可能攻击(XSS)等的回答。我的观点仍然存在,令牌不应该包含敏感信息,你应该假设一个令牌是“公开的”(每个人都可能看到它看到关于攻击等的东西)。
    • 您也应该探索有关身份验证的其他选项,不包括 JWT(正确使用时没问题),但可能还有其他“更安全”的选项
    【解决方案2】:

    如果您将其用作加密格式,那么我认为它不应该有任何危害。

    【讨论】:

      【解决方案3】:

      将令牌与道具一起使用是错误的。如果您使用诸如 Axios 之类的库,则需要在主 Axios 文件中添加一些包含令牌的授权标头。这是在 React、Vue 等中使用令牌的极少数场景之一......所以我认为你不应该用 props 发送它,因为你不需要这样做。此外,当您收到该令牌时,您需要将该令牌保存在本地存储或 Cookies 中,因此您可以从任何您想要的文件中访问它并从中提取您需要的所有数据,而无需担心通过道具传递它。

      【讨论】:

      • 如果你使用 axios,如果你不使用?确定您可以为 fetch 函数创建一个包装器,如果我什至不想这样做怎么办?如果我只是想从令牌中提取一些信息怎么办?
      【解决方案4】:

      存储在客户端应用程序中的任何内容都可以通过以下方式查看和修改:

      • 最终用户
      • 攻击者进行 XSS 攻击

      在身份验证令牌的情况下,通过使用消息签名来降低修改风险;如果消息内容发生变化,签名将与签名者公钥的消息不匹配,因此拒绝令牌。

      但是,令牌的可见性仍然是一个需要考虑的问题 - 它可能会导致对应用程序端点的重放攻击,从而使最终用户能够执行您可能不希望他们执行的操作。如果您的应用程序容易受到 XSS 攻击,那么攻击者也可以执行这些操作。

      一般来说,一个好的做法是将客户端提供的任何内容视为恶意内容,除非另有明确证明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-21
        • 2012-04-05
        • 2013-02-12
        • 2012-09-24
        • 1970-01-01
        • 2011-12-16
        • 2010-11-13
        • 2012-06-13
        相关资源
        最近更新 更多