会话控制(会话跟踪)

一、概念

        会话控制就是指对服务器和客户端之间进行会话的控制,判断这场会话的双方是谁。

        HTTP是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端,而对于某一些需求,这又是我们必须判断的,这时候就要用到会话控制,常见的会话控制技术有三种:

  1. cookie(现在不常用,基本上token都能做并做的更好);
  2. session;
  3. token。

知识拓展

        HTTP协议传输的数据都是明文数据,安全性较低,数据泄露风险较大,而HTTPS则是在HTTP基础上做了加密,简单来说就是HTTP的安全版,即在HTTP下加入SSL安全层,HTTPS的基础就是SSL,因此传输加密的加密内容就要用到SSL。

        HTTPS主要作用包括两方面,一是数据加密,保证数据传输的安全性,二是确认访问网站的真实性,起到身份验证的作用。

二者区别如下:

  • HTTPS需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  • HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTPS提供了数据传输过程中的安全保护,而HTTP没有。
  • HTTP协议无法防止中间人攻击、数据篡改和数据窃取,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

二、Cookie

         Cookie是一种存储在客户端的小型文本文件,用于存储有关用户的信息。它通常由服务器发送给浏览器,并由浏览器存储在本地。Cookie有一些特定的属性,例如过期时间、域名等,用于控制其行为。Cookie大部分是以明文的方式(可以通过属性进行Cookie不可见)存在。

三、Session   

        Session是一种用于在服务器端存储用户会话数据的机制。它用于跟踪用户的状态,以便在用户在不同页面或请求之间保持一致的会话信息。

        在使用Session时,服务器会为每个客户端创建一个唯一的会话标识符(称为Session ID),通常是一个长随机字符串。这个Session ID会通过Cookie或URL参数发送给客户端,客户端在后续的请求中携带这个会话标识符。

        服务器端会将每个会话的数据存储在一个特定的数据结构中,通常是内存、数据库或文件系统等。当客户端发送请求时,服务器会根据Session ID来找到对应的会话数据,并进行操作或处理。

四、Token(令牌)

         Token是一种用于进行身份验证和会话控制的机制,与Session有相似的功能,但是实现方式和使用场景不同。

        Token通常是一个短字符串,由服务器生成并发送给客户端,在后续的请求中客户端需要携带这个Token来进行身份验证和访问控制。

        相比于Session,Token的主要优点是无状态和可扩展性:

无状态:服务器不需要在服务器端存储会话数据,每个请求都是独立的,服务器只需要验证Token的有效性即可。这样可以减轻服务器的负担,提高系统的可伸缩性。

可扩展性:由于Token的无状态特性,可以将身份验证和会话控制分布到多个服务器上,从而实现高可用和负载均衡。

         Token的验证通常是通过签名和加密方式进行的,保证Token在传输过程中的安全性。服务器可以在Token中存储一些关键信息,如用户ID、权限等,以实现精细的会话控制。

         Token可以应用于Web应用、移动应用、API等场景,使得系统可以支持不同客户端类型的身份验证和会话控制需求。

          然而,与Session相比,Token也存在一些潜在的问题,如Token的安全性、过期时间的管理等。因此,在使用Token进行会话控制时,需要合理设计和实施相应的安全措施。

         简单的对token的工作流程进行说明,token的操作步骤一般分为四个:

  1.  当我们登录时,后端验证账号密码是否正确,如果账号正确,就需要在后端为当前登录的用户生成一个令牌(token),将令牌信息响应给前端;
  2. 前端存储token;
  3. 后面每次从前端向后端发送请求,都有携带token;
  4. 后端验证令牌,如果令牌有效,继续向后执行,如果令牌错误或过期,向前端响应认证失效;

五、token和cookie的区别

Cookie和Token都是在Web应用程序中进行会话控制的方式,但它们有一些区别。

  1. 存储位置:Cookie是存储在客户端(浏览器)中的小型文本文件,而Token是存储在服务器端的。

  2. 数据存储:Cookie可以存储在浏览器中的键值对形式的数据,而Token可以存储任意类型的数据,通常是一个加密的字符串。

  3. 安全性:由于Cookie是存储在客户端的,所以对于敏感信息的存储需要特别注意,而Token存储在服务器端,更容易保证安全性。

  4. 可扩展性:Token的可扩展性更好,因为它可以存储任意类型的数据,而Cookie只能存储简单的键值对。

  5. 无状态性:Token是无状态的,服务器不需要保存任何会话信息,而Cookie是有状态的,服务器需要维护会话状态。

  6. 跨域请求:由于浏览器的同源策略限制,Cookie在跨域请求时需要一些额外的配置,而Token可以更容易地实现跨域授权。

总体来说,Cookie和Token都有各自的优势和适用场景。Cookie适用于简单的会话控制,而Token适用于更复杂的认证和授权场景。

相关推荐

  1. 会话控制会话跟踪

    2024-04-27 17:12:01       5 阅读
  2. Node.js_会话控制

    2024-04-27 17:12:01       11 阅读
  3. Node.js开发-会话控制

    2024-04-27 17:12:01       20 阅读

最近更新

  1. C:STDIN_FILENO和stdin的区别

    2024-04-27 17:12:01       0 阅读
  2. 用wordpress为外贸进出口公司搭建多语言国际站

    2024-04-27 17:12:01       0 阅读
  3. Linux 常用命令

    2024-04-27 17:12:01       0 阅读
  4. Qt建立服务端和客户端

    2024-04-27 17:12:01       0 阅读

热门阅读

  1. 前端发版缓存问题

    2024-04-27 17:12:01       5 阅读
  2. pip 安装for mac

    2024-04-27 17:12:01       4 阅读
  3. C 语言实例 - 输出双精度(double)数

    2024-04-27 17:12:01       3 阅读
  4. CSP-J2022乘方题解

    2024-04-27 17:12:01       4 阅读
  5. 005 延时交换机

    2024-04-27 17:12:01       2 阅读
  6. AI时代的新沟通能力:结构化提示词

    2024-04-27 17:12:01       8 阅读
  7. Spring Boot 如何进行多环境配置

    2024-04-27 17:12:01       3 阅读