【问题标题】:Displaying token to user向用户显示令牌
【发布时间】:2021-06-25 22:13:10
【问题描述】:

我的 iOS 应用中有一个使用 JWT 的身份验证系统。我从服务器接收访问令牌并将其用于每个请求。我可以向用户展示该令牌吗?为什么它可能不安全?

【问题讨论】:

  • 对用户有什么好处?
  • 添加到@vadian,用户是谁?是需要了解token的app吗?然后就可以了。如果是应用用户???那就不要。您不应该将您的令牌暴露给最终用户。并且用户不会关心令牌。它是敏感的并且未加密(只是编码)它可能会泄漏敏感数据
  • 作为 JWT 实现的 访问令牌 对应用程序来说是不透明的。应用程序和用户都没有理由知道访问令牌的内部详细信息。应用程序从授权端点接收它并将其包含在用户资源端点中。此外,访问令牌是一个 secret - 它不能暴露给应用程序的外部。

标签: swift rest jwt access-token


【解决方案1】:

向用户显示 JWT 是否安全取决于其中的信息以及您组织的政策。该信息。如果令牌中只有用户的信息,在大多数情况下是可以的。但是,如果您想对用户隐藏某些信息 - 其中可能还包括有关该用户的仅供其他收件人使用的信息 - 那就不行。

基本上,用户无论如何都可以使用令牌,因为它在他设备上的应用程序中。他可以通过拦截通信(端点)或检查内存内容来达到它。

因此,如果您确实需要向用户隐藏某些信息,则令牌颁发者应加密 JWT。

【讨论】:

  • OP 专门要求公开 访问令牌。访问令牌是机密,必须安全地包含在应用程序中。通过 UI 公开它们,其他任何人都可以捕获它,然后编写和重新创建它们以供恶意使用。因此,将它们展示给“用户”是一个强烈的否定 - 也不例外。即使不小心将它们写入日志文件或分析中也是一个安全漏洞。
  • 你假设了很多不属于我的答案的东西,我建议你再仔细阅读一遍,它会让你看到不同之处;此外,您关于永远不会向最终用户提供访问令牌的底线是错误的
  • 完整的 JWT(包括签名)构成一个凭证。几乎没有理由将访问令牌中的声明(用户 ID、范围、颁发者、到期日期等)显示给最终用户。甚至客户端也不需要解码 JWT 并将其视为不透明的字节序列。
  • 证书实际上是代表用户颁发的;几乎没有理由肯定地查看它,但它是安全的,这就是问题所在;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 2020-06-27
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
相关资源
最近更新 更多