网站首页 > 博客文章 正文
对于不太熟悉的JSON Web令牌(JWT)的开发者,可以简单理解为JSON Web令牌(JWT)是用于创建声明的令牌。例如,服务器可以生成一个令牌,该令牌具有“以管理员身份登陆”的声明,并将其提供给客户端。然后,客户端可以使用该令牌来证明他们以管理员身份登陆,令牌由服务器的密钥签名,因此服务器能够验证令牌是合法的。
?JWT通常包含三部分:标头,有效负载和签名。
标头用于生成签名的算法,如下所示:
header = '{"alg":"HS256","typ":"JWT"}'
HS256指示此令牌是使用HMAC-SHA256签名。
有效负载包含我们希望提出的声明:
payload = '{"loggedInAs":"admin","iat":1422779638}'
根据JWT规范中所建议,有效负载包括时间戳iat(issued at)
签名是通过base64url对报头和有效负载进行编码并以句点作为分隔符将它们连接起来来计算的:
key = 'secretkey'unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload)signature = HMAC-SHA256(key, unsignedToken)
总而言之,我们签名进行base64url编码,并使用句点将这三个部分结合在一起,如下:
token = encodeBase64(header) + '.' + encodeBase64(payload) + '.' + encodeBase64(signature)# token is now:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI
而JSON Web令牌(JWT)本身就有漏洞,第一是公开密钥数据token值。
在前端获取token值时,只能保存公共文件或公共内容中,因为每次访问都要提供token值以保证能与服务token值一致。
第二是多数开发者习惯使用对称算法加密来验证数据的正确性。
当然很多开发者也针对其做其他防范措施,比如token值保存在数据中,每次客服端访问都要验证数据库token值是否一致等。
目前官方也有更新如何更好使用JWT防止漏洞,如果想更好使用JWT,可以自己查阅官方最新资料。
猜你喜欢
- 2024-10-11 苹果手机出现新严重漏洞:账户被接管
- 2024-10-11 你必须知道的十大漏洞之失效的访问控制——A1
- 2024-10-11 互联网小产品开发之(4)基于JWT的登录认证设计
- 2024-10-11 苹果在macOS,iOS中散布零日漏洞(如何在普通pc上安装macos苹果操作系统)
- 2024-10-11 「热点」微软自动化服务被爆高危的账户越权访问漏洞
- 2024-10-11 黑客发现苹果安全漏洞;苹果支付10万美元赏金
- 2024-10-11 垂直越权漏洞与代码分析(垂直越权漏洞修复方案)
- 2024-10-11 Apple登录功能存在安全漏洞,允许未经授权的黑客访问用户信息
- 2024-10-11 在Web应用中,别再把JWT当做session使用
- 2024-10-11 Java 15以上版本爆加密漏洞:CVE-2022-21449
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)