小袁的秘密基地
  • 🙌🏻Hi there!
  • 🧑🏻‍💻学习碎片
    • Golang
    • Java
    • Python
    • C++
    • Rust
    • 计算机网络
    • 操作系统与 Linux
    • 数据存储
    • 消息队列
    • 分布式系统
    • 云原生与 DevOps
    • 网络安全
    • 数据结构与算法
    • 业务场景
  • 🧑🏻‍🏫系统性学习
    • Go 底层设计
    • Go 高手技法
    • K8s 入门实战
    • 分布式系统典型实例
    • 数据密集型应用系统设计
    • 常见设计模式总结
    • 程序数据流静态分析指北
    • MySQL 实战技巧
    • ElasticSearch 101
  • 📝Leetcode
    • 二分查找
    • 动态规划
    • 哈希表
    • 双指针
    • 数学
    • 数据结构
    • DFS
    • BFS
    • 位运算
    • 模拟
    • 剑指 Offer
    • Go CodeTop 题解
  • 🫥CQUPT
    • 算法设计与分析
    • 计算机组织与结构
    • 计算机图形学
    • 大数据导论
由 GitBook 提供支持
在本页
  • 1. 什么是 JWT?主要用来做什么?
  • 2. JWT 由几部分组成?分别是什么?
  • 3. JWT 校验 token 时,怎么保证数据并没有被黑客拦截并篡改?
  • 4. Session + Cookie 实现
  • 5. JWT 的缺陷
  • 6. Paseto 相比 JWT 的改变
  • 7. CSRF 攻击
  • 8. 防御 CSRF 攻击
  • 9. XSS CSRF SSRF 区别以及防范
  • 10. SSL 加密算法
  • 对称加密算法
  • 非对称加密算法
  • 11. 对称加密和非对称加密有什么区别
  • 对称加密
  • 非对称加密
  1. 学习碎片

网络安全

1. 什么是 JWT?主要用来做什么?

JWT:Json Web Token,是基于 Json 的一个公开规范,这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换

2. JWT 由几部分组成?分别是什么?

一个 JWT 实际上就是一个字符串,它由三部分组成:头部、载荷与签名

3. JWT 校验 token 时,怎么保证数据并没有被黑客拦截并篡改?

signature 中有私钥来进行签名,可以保证安全性

4. Session + Cookie 实现

  1. 客户端登录成功后,服务器会给每一台主机分配一个唯一的 session_id,用来区分他们,除了存入服务器的缓存,数据库或者内存中,还会把这个 session_id 返回给相应的客户端

  2. 客户端收到 session_id 后会存入 cookie 中,以后每一次发送其他类型的请求的操作都会携带这个 session_id

  3. 服务器会将客户端发来的这个 session_id 和服务端查到的 session_id 进行对比,如果匹配,则返回给对应主机所需要的资源,否则拒绝

缺点

  1. 因为服务器缓存 session_id,需要定期清理 session_id 表

  2. 不能识别跨域请求

  3. 在分布式 (即多台服务器) 的环境下,还得做 session 同步,一般不推荐,

5. JWT 的缺陷

  1. 不安全的加密算法 JWT 给开发者提供了很多的加密算法选择,其中就包括了已知的易受攻击的算法

  2. 在 header 中包含了签名算法的种类 攻击者只需要将 header 中的 alg 字段设置为 none 就可以绕过签名验证过程,在知道服务器使用非对称加密算法的情况下,修改 alg 为一个对称加密算法

6. Paseto 相比 JWT 的改变

  • 不会向用户开放所有的加密算法

  • header 中不再含有 alg 字段,也不会有 none 算法

  • payload 使用加密算法,而不是简单的编码

7. CSRF 攻击

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

8. 防御 CSRF 攻击

前面讲到 CSRF 的一个特征是,攻击者无法直接窃取到用户的信息(Cookie,Header,网站内容等),仅仅是冒用 Cookie 中的信息。

而 CSRF 攻击之所以能够成功,是因为服务器误把攻击者发送的请求当成了用户自己的请求。那么我们可以要求所有的用户请求都携带一个 CSRF 攻击者无法获取到的 Token。服务器通过校验请求是否携带正确的 Token,来把正常的请求和攻击的请求区分开,也可以防范 CSRF 的攻击。

9. XSS CSRF SSRF 区别以及防范

  1. XSS(跨站脚本攻击):

    • 原理:攻击者通过在网页中插入恶意脚本,使用户在浏览器中执行该脚本,从而获取用户的敏感信息或进行其他恶意操作。

    • 防御方式:对用户输入进行过滤和转义、使用 HTTP Only 属性禁止 JavaScript 读取 Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码等。

  2. CSRF(跨站请求伪造):

    • 原理:攻击者利用用户已登录的身份,通过伪造请求发送到受信任的网站,使用户在不知情的情况下执行恶意操作。

    • 防御方式:使用随机化的 CSRF 令牌来验证请求的合法性。

  3. SSRF(服务器端请求伪造):

    • 原理:攻击者通过构造恶意请求,使服务器发起对内部资源的请求,从而获取敏感信息或攻击内部系统。

    • 防御方式:限制协议为 HTTPS、限制 URL 白名单、限制内网 IP 等。

10. SSL 加密算法

对称加密算法

  • DES:DES 是最早被推出的加密算法之一,但由于密钥长度短,容易被暴力破解,已于 2005 年被弃用。

  • 3DES:3DES 是 DES 算法的升级版,通过三次加密提高了安全性,但也存在严重安全漏洞,预计 2023 年后将被废弃。

  • AES:AES 是 DES 的替代方案,是目前使用最广泛的对称加密算法之一。AES 密钥长度为 128、192 或 256 位,安全性高,广泛用于金融、在线交易等领域。

非对称加密算法

  • RSA:RSA 是 1977 年发明的非对称加密算法,是目前使用最广泛的公钥算法。其安全性建立在素数分解的困难性上,即使用超级计算机也很难破解。

  • ECC:ECC 又称椭圆曲线加密算法,相比 RSA 可以使用更短的密钥实现更高的安全性。160 位 ECC 加密安全性相当于 1024 位 RSA。

SSL 握手过程中,客户端和服务器通过非对称加密算法协商对称加密算法的密钥,然后使用对称加密算法加密传输的数据。这样既保证了密钥交换的安全性,又提高了数据加密的效率。

11. 对称加密和非对称加密有什么区别

对称加密

对称加密使用相同的密钥进行数据的加密和解密。发送方和接收方必须在通信前共享这个密钥。

非对称加密

非对称加密使用一对密钥,即公钥和私钥。公钥可以公开,而私钥必须保密。

上一页云原生与 DevOps下一页数据结构与算法

最后更新于9个月前

🧑🏻‍💻