使用 props 传递身份验证令牌有哪些安全风险?

What are the security risks of passing an authentication token in react using props?

我正在使用基于 class 的组件构建一个 React 应用程序,并希望在道具中传递身份验证令牌。连接到我的浏览器的外部人员能否获取令牌并开始使用它进行操作?

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

没问题,你应该关注的是令牌中没有敏感信息,因为它可以 "grabbed" 和 "seen" 由 "anyone" (一些攻击可能是能够获得令牌并且只要它受到良好保护就可以,这意味着例如令牌过期并且没有敏感信息)

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

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

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

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

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

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

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