【问题标题】:JWT Token SecurityJWT 令牌安全
【发布时间】:2018-11-12 18:11:14
【问题描述】:

由于 JWT 令牌通过标头发送以验证使用,用户只需检查 chrome 开发工具中的 Web 调用并复制粘贴令牌并使用它来访问公开的 API。

例如,如果我使用此令牌创建记录,恶意用户可以使用相同的令牌(通过使用上述方式)在数据库中创建新记录。

我怎样才能阻止这种情况发生?使用带有服务器公钥的令牌加密来阻止这种情况吗?

【问题讨论】:

    标签: spring-boot spring-security jwt


    【解决方案1】:

    Token 代表用户身份。这是正常的,用户可以查看自己的令牌。 令牌在服务器上验证。通常没有简单的方法来伪造令牌。使用无法自行生成新令牌。

    浏览器和服务器之间的通信应该通过 TLS 完成。那么第三方将无法看到令牌。

    如果您的用户将其浏览器的访问权限授予其他人,那么是的,其他人可能会访问令牌并稍后在另一台计算机上使用它,如果此令牌尚未过期。但这并不特定于令牌,这就像将您的密码访问权限授予 smb else。

    【讨论】:

    • 感谢您对向用户提供浏览器访问权限的问题进行说明。我在考虑 JWT 时错过了这一点。
    【解决方案2】:

    可以采取以下几个步骤:

    1. 您应该使用https 连接而不是http 连接。这将加密您发送到服务器或从服务器接收的消息。因此,如果中间的人抓住了您的数据包,他将无能为力,因为消息已加密。

    2. 还可以根据您的应用行为为 jwt token 添加短期有效期。

    3. 为您的自签名令牌验证添加适当的密钥大小。 AES 小于 128 位的密钥,或 RSA 小于 1024 位的密钥用于旧版应用。2048 位加密现在很流行。
    4. HSM (Hardware Security Module) 可以用于签名和加密任务,而密钥不能从操作系统或软件级别访问。

    您应该深入挖掘更多 here[jwt 令牌 OWASP 备忘单]。

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 2018-10-16
      • 2013-08-15
      • 2019-02-05
      • 2014-08-16
      • 2017-12-25
      • 2020-04-15
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多