网络基础二 session、cookie、token

HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议(SSL(Secure Sockets Layer 安全套接字协议),),SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTP与HTTPS区别:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

http状态码分类

成功类(2字头)

200表示请求成功

重定向类(3字头)

302暂时重定向

请求错误类(4字头)

400-URL地址请求错误、资源未获取到

服务器错误类(5字头)

500-服务器错误

常见状态代码、状态描述、说明:

200 OK      //客户端请求成功

重定向类(3字头)302暂时重定向

400 Bad Request  //客户端请求有语法错误,服务器不理解请求的语法

500 Internal Server Error //服务器发生不可预期的错误

请求常用的方式:get post (put delete不常用)

GET-请求会向数据库发索取数据的请求 直接获取数据,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用

post 都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的

PUT-请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容

DELETE请求-顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作

cookie seesion token专业名词叫鉴权方式

cookie的特点

  1. cookie是一门客户端缓存技术
  2. cookie数据由服务器生成,发送给浏览器保存
  3. cookie数据的格式:键值对
  4. cookie数据过期机制:设置expire值

cookie是一门客户端技术,一般是由服务器生成返回给浏览器【客户端来保存】,并且cookie是以键值对的形式保存在浏览器客户端的,每一个cookie都会有名称,值,过期时间...。cookie有很多使用场景,在项目中比较常见的有:

1.登录记住用户名

2.记录用户浏览记录

最熟悉的应该就是记住用户名这个场景,以【考试系统】的登录功能为例,当我们登录了一次【【学之思考试系统】】,后面再去登录页面登录的时候,会发现它会帮你回填之前的用户名,这个场景就是通过cookie技术实现的

studentUserName的过期时间为一个月,因此这一个月内只要不清除浏览器端的cookie数据,那么浏览器来访问网站的登录页面都可以看到登录的回填的效果

通俗:cookie日常登录一个网站,今天记住输入用户名密码登录回填的效果,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是cookie

session的特点:

  1. session是一门服务端会话缓存技术。
  2. session由服务器端的web容器创建,保存在服务器端。
  3. session保存数据:键值对形式
  4. session过期:默认30分钟

session是服务端的会话技术,当用户登录了系统,服务器端的web容器就会创建一个会话,此会话中可以保存登录用户的信息,并且也是以键值对的形式去保存的,现在大部分系统都是使用的session技术来做的鉴权(权限鉴定),即:当用户登录完了才可以访问系统中的一些页面和数据。

以下面的系统为例:

直接访问系统考试系统首页index.html无法访问成功,会被重定向到登录页面login.html,因为这个系统有做用户鉴权,没有登录的用户无法访问系统里面的数据。

现在登录系统:

打开F12可以看到,login登录接口的响应头里有一个“set-cookie”的头信息,里面就有"SESSION=Mzc0NDNjNGItZmNhMS00ZTVmLThmMzgtNzA5NzJiNDk4OGUy;"这个信息,浏览器看到这个响应头就知道要把这个数据写到cookie当中,cookie名称为:“SESSION”,值为:"Mzc0NDNjNGItZmNhMS00ZTVmLThmMzgtNzA5NzJiNDk4OGUy"。这个session会话编号就是服务器返回的。服务器端的这个session会话保存了登录用户的信息

登录完成后再访问系统中的任何页面都是有没有问题的,因为后面每次请求都会带上浏览器里cookie里面的这个“SESSION”的值过去,如图:

当服务器收到这个请求的“Cookie”请求头里的会话id去服务器匹配,判断是同一个session会话,会话中有登录用户的信息,从而判断这个请求是一个登录用户发出的,从而放行这个请求。

session过期处理:

当服务器端的会话过期了,那么当你继续发起请求的时候,因为你从客户端带过去的会话编号还是之前的那个,就会验证不通过,就会提示你会话过期请重新登录

Token(令牌)

Token的引入

Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

Token的定义

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮

token的意思是"令牌",是用户身份的验证方式,最简单的token组成:uid【用户唯一的身份标识)、time(当前时间的时间戳)+签名可以]防止恶意第三方拼接token请求服务器)

区别对比:

cookie 和session的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗、考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

token 和session 的区别

1、作为身份认证 token安全性比session好 我们浏览器端用到session相对较多、而手机端用token比较多一点

2、token和session其实都是为了身份验证,session一般翻译为会话,而token更多的时候是翻译为令牌;

3、session在服务器端会保存一份,可能保存到缓存、文件或数据库;

4、session和token都是有过期时间一说,都需要去管理过期时间;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/356743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式 文本三剑客

一 正则表达式: 由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用…

Log4j2的Appenders配置详解

官方配置文档 https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender <Appenders> 常使用的类如下&#xff1a; org.apache.log4j.ConsoleAppender&#xff08;控制台&#xff09; org.apache.log4j.FileAppender&#xff08;文件&#xff…

【Go-zero】手把手带你在goland中创建api文件并设置高亮

【Go-zero】手把手带你在goland中创建api文件并设置高亮 大家好 我是寸铁&#x1f44a; 总结了一篇手把手带你在goland中创建api文件并设置高亮解决方案的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 问题复盘 在使用go-zero 框架时&#xff0c;常常需要用到goctl 一键生成…

Netty源码二:服务端创建NioEventLoopGroup

示例 还是拿之前启动源码的示例&#xff0c;来分析NioEventLoopGroup源码 NioEventLoopGroup构造函数 这里能看到会调到父类的MultiThread EventLoopGroup的构造方法 MultiThreadEventLoopGroup 这里我们能看到&#xff0c;如果传入的线程数目为0&#xff0c;那么就会设置2倍…

Vue2 props组件通信-父子组件传值

一、父组件向子组件传值 1、流程图 2、父组件代码 <template><div class"app"><UserInfo:usernameusername:ageage:isSingleisSingle:carcar:hobbyhobby></UserInfo></div> </template><script> import UserInfo from .…

汽车网络安全管理体系框架与评价-汽车网络安全管理体系框架

R155《网络安全与网络安全管理系统》法规中明确指出 &#xff0c; 汽车制造商应完成 “汽车网络安全管理体系认证” &#xff08;简称&#xff1a; CSMS认证&#xff09;以及 “车辆型式审批&#xff02; 且CSMS认证&#xff0c;是车辆型式审批的前提条件。 虽然我国相关政策尚…

【网络基础】IP

IP协议报头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节. 8位服务类型(Type Of Service): 3位优先权字段(已经弃用…

C++笔记之作用域解析符::和命名空间、作用域的关系

C++笔记之作用域解析符::和命名空间、作用域的关系 —— 杭州 2024-01-26 code review 文章目录 C++笔记之作用域解析符::和命名空间、作用域的关系1.`命名空间`和`作用域`两个术语的联系和区别命名空间(Namespace)作用域(Scope)联系与区别2.`作用域解析符::`和`命名空间`…

Codeforces Round 785 C. Palindrome Basis

C. Palindrome Basis 题意 定义一个正整数 a a a 是回文的&#xff08;没有前导 0 0 0&#xff09;当且仅当&#xff1a; a a a 的十进制表示形式回文 给定一个正整数 n n n &#xff0c;求出将 n n n 拆分成若干个回文数之和的方案数 思路 这是一个经典模型&#xff0…

Mybatis2:基础操作

Mybatis1 入门 目录 1 基础操作 1.1 准备数据库表 1.2 删除 1.2.1 功能实现 1.2.2 日志输入 1.2.3.1 介绍 1.2.3.2 SQL注入 1.2.3.3 参数占位符 1.3新增 1.3.1 主键返回 1.4更新 1.5 查询 1.5.1 根据ID查询 1.5.2 数据封装 1.5.3参数名说明 1 基础操作 1.1 准备…

107基于51单片机的数字温度计设计[proteus仿真]

基于51单片机的自行车测速系统设计[proteus仿真] 温度检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的数字温度计设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe5;&…

linux -- 内存管理 -- 页面分配器

linux内存管理 为什么要了解linux内存管理 分配并使用内存&#xff0c;是内核程序与驱动程序中非常重要的一环。内存分配函数都依赖于内核中一个非常复杂而重要的组件 - 内存管理。 linux驱动程序不可避免要与内核中的内存管理模块打交道。 linux内存管理可以总体上分为两大…

2024年最新MacBook苹果电脑安装JDK8、JDK11教程,配置环境变量 + 快速切换JDK版本

本帖发布日期&#xff1a;2024年01月26日&#xff0c;全网最新教程整理。 1、概述 本文主要为在MacBook苹果电脑系统下安装JDK及环境变量配置。 教程并非原创&#xff0c;摘抄自互联网&#xff0c;本人作为更新整理亲测。&#xff08;也算给自己记录一贴&#xff09; 本帖分…

数据结构【初阶】--排序(归并排序和基数排序)

目录 一.归并排序的非递归写法 1.思想应用 2.代码基本实现 (1)单趟归并逻辑 (2)多趟&#xff08;循环&#xff09;的控制条件 ① 迭代条件&#xff1a;i2*gap ② 结束条件&#xff1a;i(或i<n-2*gap)<> (3)代码展示 ① 单趟逻辑 ②整体逻辑 3.优化代码…

Springboot响应数据详解

功能接口 Controller下每一个暴露在外的方法都是一个功能接口 功能接口的请求路径是RequestMapping定义的路径&#xff0c;浏览器需要请求该功能则需要发出该路径下的请求。 RestController RestControllerControllerResponseBody(响应数据的注解) ResponseBody 类型&#…

找不到d3dcompiler 43.dll如何解决,5个方法轻松解决d3dcompiler 43.dll问题

计算机系统中d3dcompiler_43.dll文件的丢失可能会引发一系列显著的问题&#xff0c;这一动态链接库文件在Windows操作系统中扮演着至关重要的角色。它主要与Direct3D图形API相关&#xff0c;对于支持和运行使用Direct3D技术开发的各种应用程序和游戏至关重要。 一旦d3dcompiler…

RabbitMQ-如何保证消息不丢失

RabbitMQ常用于 异步发送&#xff0c;mysql&#xff0c;redis&#xff0c;es之间的数据同步 &#xff0c;分布式事务&#xff0c;削峰填谷等..... 在微服务中&#xff0c;rabbitmq是我们经常用到的消息中间件。它能够异步的在各个业务之中进行消息的接受和发送&#xff0c;那么…

sqli.labs靶场(第18~22关)

18、第十八关 经过测试发现User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0加引号报错 这里我们闭合一下试试 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0,127.0.0.1,adm…

【爬坑】临时修复To connect to xxx insecurely, use `--no-check-certificate‘报错

解决方案&#xff1a;wget请求时跳过证书验证。 sudo vim /etc/wgetrc 插入一行&#xff1a; check_certificate off 重新运行wget命令即可。

STM32-电动车报警器

STM32-电动车报警器 1.振动传感器点亮LED灯 需求:当振动传感器接收到振动信号时&#xff0c;使用中断方式点亮LED1 //重写中断服务函数&#xff0c;如果检测到EXTI中断请求&#xff0c;则进入此函数 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {//一根中断线上接有多个…