我问ChatGPT,在请求体中发送jwt是否不好,它说:
不,一般不建议在请求正文中发送 JWT(JSON Web Token)令牌。 JWT 令牌主要设计为在请求标头中发送,特别是在使用“承载”方案的“授权”标头中。
安全性:在请求正文中发送令牌会使它们面临潜在的日志记录、缓存和其他安全风险。例如,如果服务器记录传入请求(这是常见做法),令牌将以纯文本形式记录,如果日志遭到破坏,可能会导致未经授权的访问。
这个答案有效吗?
确实,
Authorization
标头通常不会出现在日志中的某个地方,或者如果做得正确的话将被清理。 Authorization
标头通常是诸如身份验证令牌之类的东西所在的地方,如果可以的话,使用它是有意义的。
您可能有正当理由将该 JWT 包含在请求正文中,甚至可能包含在 URL 本身中。 由you来权衡这里的风险和收益。 JWT 本身不会做任何事情......它完全取决于您在其中放入的内容以及您如何使用它。 此外,您还可以审核日志记录的工作方式并提出适合您的特定用例的安全方案。
抱歉,这里没有明确的黑白答案...这仅取决于您的具体用例和需求。
有趣。我正在考虑将 JWT“嵌入”体内。所以一个 JWT/JWE 用于身份验证。要交换的数据位于它自己的 JWT 中,而不是使用它连接到 API 进行数据交换。该 JWT 将定义的数字运输/贸易文档表示为小型数据集。这允许接收者按照“他需要的方式”使用包含的数据,而不是基于需要同意进行 API 集成的预定义业务逻辑。这里的用例是一个联合系统,其中许多方在供应链的运营物流中进行协作,但他们没有遵守单一的权限/平台。想法是,一方可以以这种方式参与接收共享数据,从而提供共享/接收的证据,而无需集中式系统或使用区块链来注册不可变。
对于将 JWT 包含在请求正文中的良好实践有任何反馈吗?