【发布时间】:2018-11-12 18:11:14
【问题描述】:
由于 JWT 令牌通过标头发送以验证使用,用户只需检查 chrome 开发工具中的 Web 调用并复制粘贴令牌并使用它来访问公开的 API。
例如,如果我使用此令牌创建记录,恶意用户可以使用相同的令牌(通过使用上述方式)在数据库中创建新记录。
我怎样才能阻止这种情况发生?使用带有服务器公钥的令牌加密来阻止这种情况吗?
【问题讨论】:
标签: spring-boot spring-security jwt
由于 JWT 令牌通过标头发送以验证使用,用户只需检查 chrome 开发工具中的 Web 调用并复制粘贴令牌并使用它来访问公开的 API。
例如,如果我使用此令牌创建记录,恶意用户可以使用相同的令牌(通过使用上述方式)在数据库中创建新记录。
我怎样才能阻止这种情况发生?使用带有服务器公钥的令牌加密来阻止这种情况吗?
【问题讨论】:
标签: spring-boot spring-security jwt
Token 代表用户身份。这是正常的,用户可以查看自己的令牌。 令牌在服务器上验证。通常没有简单的方法来伪造令牌。使用无法自行生成新令牌。
浏览器和服务器之间的通信应该通过 TLS 完成。那么第三方将无法看到令牌。
如果您的用户将其浏览器的访问权限授予其他人,那么是的,其他人可能会访问令牌并稍后在另一台计算机上使用它,如果此令牌尚未过期。但这并不特定于令牌,这就像将您的密码访问权限授予 smb else。
【讨论】:
可以采取以下几个步骤:
您应该使用https 连接而不是http 连接。这将加密您发送到服务器或从服务器接收的消息。因此,如果中间的人抓住了您的数据包,他将无能为力,因为消息已加密。
还可以根据您的应用行为为 jwt token 添加短期有效期。
AES 小于 128 位的密钥,或 RSA 小于 1024 位的密钥用于旧版应用。2048 位加密现在很流行。HSM (Hardware Security Module) 可以用于签名和加密任务,而密钥不能从操作系统或软件级别访问。您应该深入挖掘更多 here[jwt 令牌 OWASP 备忘单]。
【讨论】: