网络基础二 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都是有过期时间一说,都需要去管理过期时间;

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: SessionCookieToken、JWT都是在Web开发中用于管理用户身份认证和会话管理的工具。 1. SessionSession指的是服务器端保存的用户信息。当用户登录成功后,服务器会创建一个session,为该用户分配一个session ID,并将该ID保存到cookie中,发送给客户端。客户端浏览器保存了这个cookie,以后每次请求都会带上这个cookie,服务器通过这个cookie就可以识别出用户身份,从而进行相应的操作。Session机制存在一定的风险,比如会话劫持、会话固定等问题,需要注意安全性。 2. CookieCookie是一种客户端保存用户信息的机制,它是由服务器在响应HTTP请求时通过Set-Cookie头部字段发给客户端浏览器的一小段文本信息。浏览器将这些信息保存在客户端,以后每次向服务器发送请求时都会自动带上这些cookie,从而实现身份认证和会话管理。但是Cookie也存在一些安全问题,比如会话劫持、跨站脚本攻击等问题。 3. TokenToken是一种用户身份认证和授权的机制,通常由服务器生成,以便在客户端和服务端之间进行身份认证和授权。客户端在登录成功后,服务器会为该用户生成一个Token,并将Token发送给客户端浏览器。客户端在之后的请求中需要携带该Token,服务器验证Token的有效性后,就可以识别出用户身份,并进行相应的操作。Token相比SessionCookie,具有更高的安全性和可扩展性。 4. JWT:JWT是一种基于Token的身份认证和授权机制。JWT包含三部分,分别是头部、载荷和签名。头部包含加密算法和类型等信息;载荷包含用户的身份信息和相关的元数据等信息;签名则是对头部和载荷进行签名生成的一段密文,用于验证Token的有效性。JWT具有无状态、可扩展、跨域等特点,被广泛用于Web开发中的用户身份认证和授权。 ### 回答2: SessionCookieToken和JWT都是常见的身份验证和会话管理方法。下面我会分别介绍它们。 SessionSession是服务器端记录用户状态的一种机制。当用户通过用户名和密码登录后,服务器会为该用户创建一个唯一的Session。之后,用户再发送请求时,服务器会根据Session来识别用户并获取用户的状态信息。 CookieCookie是一种在客户端存储的小型文本文件。在用户通过用户名和密码登录成功后,服务器可以将一个包含Session信息的Cookie发送给客户端,客户端会将该Cookie保存下来。之后,客户端发送请求时,会自动附带上该Cookie,用于向服务器证明用户的身份。 TokenToken是一种代表用户身份的令牌。与Cookie不同,Token是在客户端保存的,并且不需要服务器端存储用户状态。当用户登录成功后,服务器会生成一个Token并发送给客户端,客户端将其保存起来。之后,客户端发送请求时,会将Token作为请求头信息的一部分发送给服务器,服务器根据Token验证用户身份。 JWT:JWT(JSON Web Token)是一种基于JSON的开放标准,用于在各方之间安全传输信息。它由三部分组成:Header、Payload和Signature。其中,Header用于描述JWT的元数据,Payload用于存储实际传输的数据,Signature用于验证JWT的合法性。在使用JWT进行身份验证时,服务器会生成一个JWT并发送给客户端,客户端将其保存起来。之后,客户端发送请求时,会将JWT作为请求头信息的一部分发送给服务器,服务器根据JWT验证用户身份的合法性。 总结:SessionCookieToken和JWT都是常用于身份验证和会话管理的方法,它们各有优劣和适用场景。SessionCookie依赖于服务器端存储用户状态,而Token和JWT则可以减轻服务器的负担,并且适用于分布式系统。其中,JWT由于其自包含性和可扩展性,在分布式系统和前后端分离的架构中得到了广泛应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南棋网络安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值