跳至主要內容
JWT 身份认证优缺点分析

JWT 基本概念详解这篇文章中,我介绍了:

  • 什么是 JWT?
  • JWT 由哪些部分组成?
  • 如何基于 JWT 进行身份验证?
  • JWT 如何防止 Token 被篡改?
  • 如何加强 JWT 的安全性?

这篇文章,我们一起探讨一下 JWT 身份认证的优缺点以及常见问题的解决办法。


JavaGuidePro大约 10 分钟系统设计安全
认证授权基础概念详解

认证 (Authentication) 和授权 (Authorization)的区别是什么?

这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。

说简单点就是:

  • 认证 (Authentication): 你是谁。
  • 授权 (Authorization): 你有权限干什么。

稍微正式点(啰嗦点)的说法就是:


JavaGuidePro大约 13 分钟系统设计安全
常见加密算法总结

加密算法是一种用数学方法对数据进行变换的技术,目的是保护数据的安全,防止被未经授权的人读取或修改。加密算法可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也叫摘要算法)。

日常开发中常见的需要用到的加密算法的场景:

  1. 保存在数据库中的密码需要加盐之后使用哈希算法(比如 BCrypt)进行加密。
  2. 保存在数据库中的银行卡号、身份号这类敏感数据需要使用对称加密算法(比如 AES)保存。
  3. 网络传输的敏感数据比如银行卡号、身份号需要用 HTTPS + 非对称加密算法(如 RSA)来保证传输数据的安全性。
  4. ……

JavaGuidePro大约 16 分钟系统设计安全
JWT 基础概念详解

什么是 JWT?

JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。 从 JWT 的全称可以看出,JWT 本身也是 Token,一种规范化之后的 JSON 结构的 Token。

JWT 自身包含了身份验证所需要的所有信息,因此,我们的服务器不需要存储 Session 信息。这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。


JavaGuidePro大约 6 分钟系统设计安全
敏感词过滤方案总结

系统需要对用户输入的文本进行敏感词过滤如色情、政治、暴力相关的词汇。

敏感词过滤用的使用比较多的 Trie 树算法DFA 算法

算法实现

Trie 树

Trie 树 也称为字典树、单词查找树,哈系树的一种变种,通常被用于字符串匹配,用来解决在一组字符串集合中快速查找某个字符串的问题。像浏览器搜索的关键词提示一般就是基于 Trie 树来做的。

浏览器 Trie 树效果展示
浏览器 Trie 树效果展示

JavaGuidePro大约 3 分钟系统设计安全