我知道这个问题并不是什么新鲜事,可能已经在互联网上讨论过了。
我是新手,但经过一些研究,我同意它是安全的,因为匿名可以嗅探令牌但无法在其上附加任何内容。我打算将 JWT 存储在 HTML5Storage 中,并解码一些不敏感信息的有效负载:DisplayName、email_address 和 role_info 等。
这是我的问题,可以匿名嗅探我的 JWT 令牌并代表我行事吗?如果这是可能的,我该如何避免呢?
我知道这个问题并不是什么新鲜事,可能已经在互联网上讨论过了。
我是新手,但经过一些研究,我同意它是安全的,因为匿名可以嗅探令牌但无法在其上附加任何内容。我打算将 JWT 存储在 HTML5Storage 中,并解码一些不敏感信息的有效负载:DisplayName、email_address 和 role_info 等。
这是我的问题,可以匿名嗅探我的 JWT 令牌并代表我行事吗?如果这是可能的,我该如何避免呢?
简而言之,JWT 本身并不安全,它只是明文。JWT 在基本术语中是一种标准协议,用于定义信息,也称为在各方之间传递的声明。结合 JWS(签名)和 JWE(加密)将使其安全。最重要的主题是 JOSE - Javascript 对象签名和加密。除了阅读您应该参考的 RFC 本身之外,还有大量在线信息没有说明明显也没有侮辱您的搜索能力。查看http://jose.readthedocs.io/en/latest/(包括 RFC 的参考链接)
因此,要回答您的问题,如果在飞行中(通过有线)和静止(即:数据库)使用行业安全标准进行签名和加密,是的,它是安全的。
在欺骗方面,您需要在会话劫持和/或令牌劫持领域采取预防措施,并防止彩虹表之类的事情发生。
JOSE 真的只是一个标准,不管是什么标准,你真正要问的是关于安全措施的最佳实践,你也应该参考 OWASP https://www.owasp.org/
这有助于澄清你的问题吗?