【发布时间】:2020-07-11 16:29:44
【问题描述】:
JWT 旨在允许在客户端需要与后端通信时交换防篡改令牌。它还可以通过在令牌中缓存会话数据来避免调用后端数据存储。
但我可以使用标准加密算法轻松加密会话数据并将其发送回客户端,客户端只需在每次调用时返回它。
那么,我通过使用 JWT 真正获得了什么?如果有的话,将算法类型放在 JWT 中似乎是一个安全漏洞,因为它告诉黑客使用了哪种加密,从而减少了解密令牌所需的算法类型。通过仅以某种专有格式(不一定是 JSON)对我的会话数据进行编码,甚至使用自定义加密算法,这难道不是比使用 JWT 更好的解决方案吗?或者我会因为不使用 JWT 而错过一些东西吗?
【问题讨论】:
-
标准化软件的好处,更重要的是,经过彻底审查和测试的软件对我来说似乎是不言而喻的,尤其是在密码学方面。如果它不适合你,我不确定你期望什么样的答案。 Knowledge of the used cryptographic primitives doesn't compromise security。您的“自定义加密算法”(及其实现)安全的可能性几乎为零。
-
在安全性方面,实际上成为标准并不能使某些东西变得可行。我非常怀疑任何银行在他们的应用程序中使用 JWT。无论您如何证明使用标准的合理性,向黑客披露您的加密算法都是不好的。金融机构不太可能这样做。
标签: encryption jwt