切勿使用Json Web令牌进行身份验证

简介: 切勿使用Json Web令牌进行身份验证 我一直在与JWT(JSON网络令牌)打交道很长一段时间,我看到很多人试图用它们作为会话和cookie的替代品。但是在做了一些广泛的研究之后,我结识了更多的人,他们分享我的意识形态,认为Json网络令牌将被证明是会话和cookie的可靠替代品。

切勿使用Json Web令牌进行身份验证

我一直在与JWT(JSON网络令牌)打交道很长一段时间,我看到很多人试图用它们作为会话和cookie的替代品。但是在做了一些广泛的研究之后,我结识了更多的人,他们分享我的意识形态,认为Json网络令牌将被证明是会话和cookie的可靠替代品。

首先,让我们快速了解如何在用户登录系统中使用JWT。

JWT登录系统

谈到JWT,使用JWT代替传统登录系统的第一个好理由就是我们可以在每个请求上传递JWT并且JWT将包含用户ID。如果JWT有效,即由服务器本身创建,则服务器接受它并让用户执行所需的操作。这样,您可以省去点击数据库的麻烦,检查是否让我登录Cookie并管理会话。

潜在问题)

即使对我来说,JWT也非常有吸引力,直到我深入思考并意识到一些潜在的问题,使得JWT显得无用身份验证。

您在JWT中存储的内容

需要注意的是,JWT最终必须以cookies或网络存储的形式存储在用户的设备中。因此,任何有权访问设备和令牌的人不仅可以阅读JWT,还可以阅读JWT的内容。震惊吗?那么,对于不了解JWT工作的人来说,这是一个现实检查。所以希望唯一可以存储的就是用户标识,即使这样你每次都必须点击数据库来检查用户可以执行的操作,比如角色等。

让我保持登陆状态

保持登录令牌通常以cookie的形式存储,并且可以帮助您避免每次打开网站时都输入密码。一般程序是令牌存储在用于启动会话的cookie中。但用JWT替换会话意味着你完全处于令牌的摆布之中。想一想,如果某人的设备被盗,他们会失去他们的标记,现在任何拥有该标记的人都可以登录。而且它甚至不像您可以从已批准令牌的列表中删除该令牌,因为如果您这样做,这意味着服务器将不得不在每个请求中检查该令牌的存在。同样,这会在使用令牌时造成更多的伤害。

速度

速度在登录系统中非常重要。有些人现在会指出解码JWT可能比从数据库中获取数据要快,但不应该忘记JWT必须在每次请求时都解码,这与传统方法不同,后者只需要触摸数据库一次在一开始的时候。

结论

智威汤逊是一项出色的技术,但它们不是登录系统的替代品。考虑到我们在本文中讨论的事实,在登录流程中使用它们将是一场完全灾难。这些只是我的看法,请随时在下面的评论部分添加到这个主题。

相关文章
|
3月前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
60 1
|
3月前
|
JSON 前端开发 JavaScript
|
1月前
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
44 0
|
3月前
|
存储 JSON 数据安全/隐私保护
"FastAPI身份验证与授权的奥秘:如何用Python打造坚不可摧的Web应用,让你的项目一鸣惊人?"
【8月更文挑战第31天】在现代Web开发中,保证应用安全性至关重要,FastAPI作为高性能Python框架,提供了多种身份验证与授权方式,包括HTTP基础认证、OAuth2及JWT。本文将对比这些机制并附上示例代码,展示如何使用HTTP基础认证、OAuth2协议以及JWT进行用户身份验证,确保只有合法用户才能访问受保护资源。通过具体示例,读者可以了解如何在FastAPI项目中实施这些安全措施。
138 1
|
3月前
|
JavaScript 安全 前端开发
Node.js身份验证全攻略:策略与实践,打造坚不可摧的Web应用安全防线!
【8月更文挑战第22天】Node.js作为强大的服务器端JavaScript平台,对于构建高效网络应用至关重要。本文探讨其身份验证策略,涵盖从基于token至复杂的OAuth 2.0及JWT。Passport.js作为认证中间件,支持本地账号验证及第三方服务如Google、Facebook登录。同时介绍JWT轻量级验证机制,确保数据安全传输。开发者可根据应用需求选择合适方案,注重安全性以保护用户数据。
70 1
|
3月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
3月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
51 0
|
3月前
|
存储 安全 测试技术
Web2py中的身份验证与授权之谜:如何让你的Web应用飞起来?
【8月更文挑战第31天】在Web开发中,确保应用安全性至关重要,Web2py作为Python Web框架,提供了强大的身份验证与授权功能。本文探讨了Web2py的身份验证(包括表单验证、密码加密及会话管理)与授权(涵盖角色权限、URL过滤及用户组管理)。通过示例代码展示了用户模型定义、角色关系设置及登录流程处理等关键步骤。合理利用这些功能并结合最佳实践如使用内置验证、灵活控制访问权限及编写测试,可帮助开发者高效构建安全稳定的应用程序。
20 0
|
3月前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
154 0
|
3月前
|
JSON Java API
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?