首页 > 其他分享 >token解决cookie的弊端

token解决cookie的弊端

时间:2023-03-11 10:45:11浏览次数:35  
标签:弊端 浏览器 token session cookie 服务器

token解决cookie的弊端

目录

cookie的弊端

  • 弊端一:浏览器请求过服务器后,下一次访问时服务器就会通过浏览器cookie中携带的sessionID去寻找对应session,但是如果服务器做了负载均衡,用户下一次请求可能会被定向到其他服务器节点,那台服务器上没有用户session信息,就会导致验证失败,所以session默认机制下不适合做分布式部署。其实可以将session集中存储在同一个地方,所有服务器都去这里去访问,但增加了单点失败的可能性。如果负责存储session的机器出现问题,所有人都要重新登录。
  • 弊端二:cookie安全性较低。

token解决弊端一

什么是token和JWT

token:简单说就是服务器给浏览器发了一枚令牌,以后带着令牌过来就能随便访问。

JWT:全称 JSON Web Tokens ,是一种规范化的 token。

JWT的构成

它是一个字符串,由头部、载荷与签名三部分构成,两两之间用.分隔。

头部(Header):一般存放令牌类型和签名(加密)算法类型。将其用Base64Url进行编码。

载荷(Payload):包括签发人、生效时间、编号等信息。将其用Base64Url进行编码。

签名(Signature):将前两部分编码过的字符串用指定的签名算法和服务器提供的密钥进行加密得到签名。

token工作流程

  1. 用户通过用户名及密码进行登录验证。
  2. 服务器验证成功后生成token将其返回给浏览器。
  3. 浏览器可以将其存储在cookie中(也可以存储在其他地方),在以后访问中将token添加到http请求的header中。
  4. 服务器通过token中前两部分内容及服务器存储的密钥再次加密,然后与token中的签名进行核对,相同说明已登录。

这样一来,服务器不用保存每个用户的session,只需要保存一段密钥。token由用户自己保存。

token解决弊端二

CSRF攻击

CSRF(Cross-site request forgery),即跨站请求伪造。

举例:我去访问A网站,服务器给了我cookie,我又去访问B网站,有人在B网站中放入了一个来自A网站的链接,点击后会执行一些非我本意的操作,我点击后浏览器带着我的cookie去请求,服务器误以为就是我想来执行这些操作,于是就凉凉了。

token防止CSRF

浏览器请求时会默认携带cookie,但不会直接携带token。

还有人说cookie中不是也可能存有token吗,那cookie被劫持和token被劫持有什么区别?CSRF的原理是冒用别人的cookie去欺骗服务器,但不能获取到cookie中的信息。所以即便cookie被劫持,但cookie本身不参与验证,只是起到存储作用,用于验证的token必须添加到http的header中。

标签:弊端,浏览器,token,session,cookie,服务器
From: https://www.cnblogs.com/LoginX/p/Login_X66.html

相关文章

  • 初始Cookie、Cookie的基本用法
    初始CookieCookie是什么?Cookie全程HTTPCookie,简称Cookie是浏览器存储数据的一种方式因为存储在用户本地,而不是存储在服务器上,是本地存储......
  • Cookie
    会话:用户打开一个浏览器,点击很多超链接,访问多个web资源,关闭浏览器,这个过程称为会话。一个网站,怎么证明你来过?客户端和服务端1.服务端给客户端-一个信件,客户端下次访问......
  • Cookie前端优化
    cookie由于http请求每次都是独立的,它的执行情况和结果与前面的请求、之后的请求没有直接关系,没有办法区分当前客户,所以产生了cookie。使特定客户端与服务器产生联系cooki......
  • Cookie Session
    Cookie1,Cookie实际上是一小段的文本信息客户端请求服务如果服务器需要记录该用户状态就想客户端浏览器颁发一个Cookie2,客户端浏览器会把Cookie保存起来当浏......
  • vue-router SyntaxError: Unexpected token '{' (at xxx.vue:14:8)
    点进去后指向这一行:重新一行一行看,发现是整理代码的时候,以为有一个prop变量用不到,删了,结果在组件模板另一个地方有用。奇怪这类问题为什么编辑器不会提示出来。......
  • Swagger添加全局token 验证
    1.过滤器代码实现packagecom.pab.data.datasource.filter;importcom.pab.data.datasource.common.BaseContext;importlombok.extern.slf4j.Slf4j;importorg.spri......
  • 【Azure Function App】在ADF(Azure Data Factory)中调用 Azure Function 时候遇见 Fa
    问题描述在ADF(AzureDataFactory)中,调用AzureFunctionApp中的Function,遇见了 FailedtogetMIaccesstokenTherewasanerrorwhilecallingendpointwitherr......
  • Token存放在cookie、localStorage/sessionStorage的区别
    首先解释下TokenToken其实就是访问资源的凭证;Token——普遍情况下是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串。 用户登陆......
  • 一篇搞懂cookie和session
    一篇搞懂cookie和sessioncookie、session和token存在的意义是什么?http是无状态的,每次请求是独立的,服务端不保存会话信息,所以他的好处也就是快,但缺点也显而易见,就是无法......
  • Python爬虫系列之Session和cookie的使用
    对于经常做数据采集的技术员来说,常常遇到采集的页面限制我们的访问,尤其在频繁刷新或者访问一个页面时会引起网站的一些列反爬措施。今天我们就来谈谈Session和cookie的......