当前位置:首页 > 实用技巧 >

jwt只能创建不能删除(jwt登录权限怎么改)

来源:原点资讯(www.yd166.com)时间:2023-06-09 07:44:06作者:YD166手机阅读>>

今天,JSON Web Tokens 广泛用于应用程序中以共享安全信息。尽管如此,它们并非完全万无一失,可能会为攻击者打开大门。

但是,如果我们正确使用 JWT,我们可以避免这些缺点。因此,在本文中,我将讨论使用 JSON Web Tokens 时需要遵循的 5 个最佳实践。

1. 选择最合适的算法

一个 JSON Web Token 由 3 部分组成,分别是 Header、Payload 和 Signature。标头包含有关令牌类型和签名算法的信息。

{ "alg": "HS256", "typ": "JWT" }

有多种类型的签名算法可用,每种算法都有独特的功能。

例如,像对称算法算法允许您签署使用共享密钥的消息,而所述非对称算法和使用公共和私有密钥对。

然而,RS256是最推荐使用的算法,因为,

  • 它为各种语言和实现提供更广泛的支持。
  • 只有私钥持有者可以对令牌进行签名,其他人可以使用公钥来验证其签名。
  • 您可以使用 为各种受众请求有效令牌RS256。
  • 如果您的私钥被盗,您可以使用RS256更新后的密钥进行密钥轮换,而无需重新部署。(但是使用HS256,您将不得不重新部署。)

2. 始终对令牌进行签名

选择适当的算法后,您必须始终在发送令牌之前对其进行签名。

JWT 签名是确保令牌中的数据(有效负载)未被更改的基本安全功能。

要创建 JWT 签名,您需要编码的标头、编码的有效负载、机密和标头中指定的算法。例如,带有HMACSHA256算法的签名如下所示:

HMACSHA256( base64UrlEncode(header) “.” base64UrlEncode(payload), secret)

因此,如果标头或有效负载有任何更改,您将必须创建一个新的令牌签名。

此外,您可以在声明中包含一个随机令牌 ID,jti以防止两个令牌同时具有完全相同的签名。

3. 使用基于时间的声明

为 JWT 令牌定义合适的生命周期至关重要,因为不可能使它们无效。例如,id 或访问令牌不能被撤销,因为它不与任何会话相关联。

因此,您应该将 JWT 的生命周期设置得尽可能短,最多以秒或分钟为单位。但永远不要设置在几天或几个月内。

您可以使用exp声明来设置过期时间,并且只有当当前日期/时间必须在过期时间之前时,令牌才会有效。

{ "exp":1300819380, "http://example.com/is_root":true }

同样,还有 2 个基于时间的声明可用于 JWT:

  • nbf声明 — 可以为此声明指定一个“不在之前”的时间段,如果当前时间早于声明中的时间nbf,则令牌将被拒绝。
  • iat 声明——“发布于”声明定义了 JWT 的发布时间,它可用于拒绝太旧而无法与您的资源服务器一起使用或在已知事件之前发布的令牌。

4. 设置发行人和受众

在 JWT 中定义颁发者和接收者是另一个要遵循的好习惯。您可以为此使用iss和aud声明,这将使接收者的令牌管理变得更加容易。

通过这些声明,他们将检索签名密钥并检查它是否是为他们颁发的令牌。

{ "iss":"piumi", "exp":1300819380, "http://myweb.com/is_root":true }

例如,如果您是接收方,您必须在接受之前验证 JWT 是由相关方(iss )签发并为您签发(aud)。

这降低了攻击者通过利用为其他人指定的令牌来访问您的数据的机会。

5. 不要使用 JWT 作为会话令牌

乍一看,将 JWT 用于会话令牌似乎是一个明智的选择,因为 JWT 不涉及用于会话验证的数据库查找。但是,实际上,JWT 不是会话处理的好选择。

由于 JWT 的标准很复杂,用户往往会在令牌设置上犯错,从而允许攻击者克隆它们并假装成其他人。

此外,当用户从系统注销时,我们应该能够通过简单地从会话存储中删除会话令牌来使会话“无效”。但是,这对于 JWT 令牌是不可行的。我们无法删除令牌,因为它是独立的,并且没有集中控制来使其无效。

最后但并非最不重要的一点是,由于 JWT 很大,在 cookie 中使用它们会带来巨大的每个请求成本。因此,建议不要将它们用作会话令牌。

为您的 Web 应用程序使用身份提供程序时,请使用 JWT 来识别和验证用户。

然后,您可以通过使用经过验证的用户信息(不将 JWT 直接存储在 Cookie 中)建立会话来转换到 Cookie 身份验证。

,

栏目热文

删除运行中的记录(如何清除开始运行的记录)

删除运行中的记录(如何清除开始运行的记录)

运行,可以点击左下角的开始菜单找到,也可以直接按 Win R组合键,打开运行,通常我们用过的一些命令,都会被运行保留...

2023-06-09 07:58:08查看全文 >>

wta 管理工具(wta官方app)

wta 管理工具(wta官方app)

WTA(国际女子网球协会)和全球技术合作伙伴SAP联手推出名为“WTA大学”(WTA University)的全新教育平...

2023-06-09 07:39:51查看全文 >>

jwt如何去掉(jwt过期怎么设置)

jwt如何去掉(jwt过期怎么设置)

JWT 引入JSONwebtoken(JWT)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在...

2023-06-09 07:47:42查看全文 >>

如何删除运行中的记录(删除运行里的记录)

如何删除运行中的记录(删除运行里的记录)

通常,在电脑使用过程中会自动记录一些用户的使用信息,这涉及面很广,比如今天你上网浏览了哪些内容?还比如你今天是否登录了你...

2023-06-09 07:55:04查看全文 >>

jwt过期了怎么处理(jwt过期时间存储在哪)

jwt过期了怎么处理(jwt过期时间存储在哪)

前面一篇文章《》介绍了基于SpringBoot实现JWT登录认证的基本思路,我们使用了com.auth0 这样一个JWT...

2023-06-09 08:07:42查看全文 >>

什么是wta模式怎么更改(wta和wtp为什么存在较大不同)

什么是wta模式怎么更改(wta和wtp为什么存在较大不同)

一、前 情 温 故(一)第一季《碰撞盾》第一季主要通过大量职业球员的动图揭示弯系与直系 “ 碰撞盾 ”(技术结构的一种比...

2023-06-09 08:13:15查看全文 >>

小米8原装后盖拆装教程(小米8后盖正确拆卸方法视频)

小米8原装后盖拆装教程(小米8后盖正确拆卸方法视频)

小米8后盖采用玻璃材质,经常会摔坏,我还不喜欢带壳[笑哭],所以在网上已经买了七八个手机后盖了-。今天简单的分享一下怎么...

2023-06-09 07:50:21查看全文 >>

小米8更换后盖胶教程(小米8更换屏幕教程)

小米8更换后盖胶教程(小米8更换屏幕教程)

前两天老铁送来一部小米8探索版,,后盖摔的破烂不堪,今天后盖到货我们一起来修复它吧屏幕也有轻微的破顺,但并不影响使用也是...

2023-06-09 08:18:15查看全文 >>

小米8透明后盖拆卸教程(小米笔记本后盖拆卸教程)

小米8透明后盖拆卸教程(小米笔记本后盖拆卸教程)

要说最会“玩后盖”的手机厂商,小米要敢说第二,估计没有厂商敢认第一。2016年的小米5玩出了“陶瓷后盖”(比MIX还早半...

2023-06-09 07:37:04查看全文 >>

小米8可以自己换后盖吗(小米8自己在家更换后盖教程)

小米8可以自己换后盖吗(小米8自己在家更换后盖教程)

年底了,外婆抱怨目前用的360 N6 Pro手机太卡太费电,一天居然要三充,于是想换一部手机。我本来想送她一部全新小米1...

2023-06-09 08:09:18查看全文 >>

文档排行