# JWT在使用过程中的注意事项 ## `JWT`的几个特点 (1)`JWT` 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次。 (2)`JWT` 不加密的情况下,不能将秘密数据写入`JWT`。 (3)`JWT` 不仅可以用于认证,也可以用于交换信息。有效使用 `JWT`,可以降低服务器查询数据库的次数。 (4)`JWT` 的最大缺点是,由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。也就是说,一旦 `JWT` 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。 (5)`JWT` 本身包含了认证信息,一旦泄露,任何人都可以获得该令牌的所有权限。为了减少盗用,`JWT` 的有效期应该设置得比较短。对于一些比较重要的权限,使用时应该再次对用户进行认证。 (6)为了减少盗用,`JWT` 不应该使用 HTTP 协议明码传输,要使用 `HTTPS` 协议传输。 > `JWT Token` 一旦签发,就会在有效期内一直可用,无法在服务端废止,当用户进行登出操作,只能依赖客户端删除掉本地存储的 `JWT Token`,如果需 要禁用用户,单纯使用 `JWT` 就无法做到了。 ## 安全性相关 如果加强 `JWT` 的安全性? 总结以下几点: 一定要保存好服务端的`secret`,防止泄露给客户端。 缩短 `token 有效时间 使用安全系数高的加密算法` `token` 不要放在 `Cookie` 中,有 `CSRF`风险 使用 `HTTPS` 加密协议 对标准字段`iss`、`sub`、`aud`、`nbf`、`exp` 进行校验