Skip to content

什么是 JWT?

JWT (JSON Web Token) :一种基于 Token 的认证授权机制,可以解决跨域

  • 是一个通过.分成三个 Base64 编码的字符串
    • Header : 描述 JWT 的元数据,定义了生成签名的算法以及 Token 的类型。
      • typ(Type):令牌类型,也就是 JWT。
      • alg(Algorithm):签名算法,比如 HS256。
    • Payload : 用来存放实际需要传递的数据:默认不加密,所以不建议存放私密信息(也可以服务端进行加密)
      • 前两个都是 json 格式的
      • 一般存放用户的身份信息如姓名和过期时间。
    • Signature(签名):服务器通过 Payload、Header 和一个密钥(Secret)使用 Header 里面指定的签名算法(默认是 HMAC SHA256)生成。
      • 修改了上面的信息,生成的签名就不会一致了。
    • 密钥如果泄露,那么就可以被恶意攻击了。
  • 优势:直接包含了所有信息,如过期时间,不需要再在 redis 中存放也是可以的,直接解析出用户信息,去数据库中比对即可。
  • 一般放在 localStorage 中,避免出现 CRSF 攻击。

你可以在 jwt.io 这个网站上对其 JWT 进行解码,解码之后得到的就是 Header、Payload、Signature 这三部分。

Header 和 Payload 都是 JSON 格式的数据,Signature 由 Payload、Header 和 Secret(密钥)通过特定的计算公式和加密算法得到。

CRSF

CSRF(Cross Site Request Forgery)跨站请求伪造,一种网络攻击。

  • 伪造身份请求
  • 依赖于 Cookie,浏览器只要发送请求,Cookie 就会被携带

SQL 脚本注入

XSS 等安全攻击

正在精进