token解决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工作流程
- 用户通过用户名及密码进行登录验证。
- 服务器验证成功后生成token将其返回给浏览器。
- 浏览器可以将其存储在cookie中(也可以存储在其他地方),在以后访问中将token添加到http请求的header中。
- 服务器通过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解决cookie的弊端的更多相关文章
- Token ,Cookie和Session的区别
在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解. Cookie cookie 是一个非常具体的东西,指的就是浏 ...
- Token ,Cookie、Session傻傻分不清楚?
作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html 在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对to ...
- Token 、Cookie和Session的区别
本文转至http://blog.csdn.net/tobetheender/article/details/52485948 https://blog.csdn.net/axin66ok/articl ...
- 关于Token和Cookie做权限校验的区别及Token自动续期方案
title: 关于Token和Cookie做权限校验的区别及Token自动续期方案 categories: 后端 tags: - .NET Token和Cookie的区别 首先,要知道一些基本概念:h ...
- 解决cookie跨域访问
一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...
- 解决cookie跨域访问.2
v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...
- 七、vue中将token存到cookie
使用js-cookie工具: 1.npm i js-cookie //安装2.import Cookies from 'js-cookie' //引用 // 存入cookie:Cookies.set( ...
- 前后端分离 token和cookie对比
HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证 1.cookie 用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用 ...
- Token ,Cookie和Session的区别--学习笔记
http://blog.csdn.net/tobetheender/article/details/52485948 Token token的意思是“令牌”,是用户身份的验证方式,最简单的token组 ...
- 进阶——scrapy登录豆瓣解决cookie传递问题并爬取用户参加过的同城活动©seven_clear
最近在用scrapy重写以前的爬虫,由于豆瓣的某些信息要登录后才有权限查看,故要实现登录功能.豆瓣登录偶尔需要输入验证码,这个在以前写的爬虫里解决了验证码的问题,所以只要搞清楚scrapy怎么提交表单 ...
随机推荐
- js滚动加载数据
话不多说,直接上代码,有些地方需要加自己的逻辑,自己加 <!DOCTYPE html><html><head lang="en"> <me ...
- Mysql学习:3、sql数据类型及命令
1.sql功能分类: 2.常见数据类型: 3.sql命令: DDL命令: a.创建数据库: create database testdatabase(数据库名称) character set utf8 ...
- react常见bug - 查询条件变化,但page未重置为1
问题1.多次触发请求,且存在潜在的竞态问题 const [page, setPage] = useState(1); const [keyword, setKeyword] = useState('' ...
- a标签做锚点定位,有部分内容被置顶头部遮挡的解决方法
被遮挡的元素添加如下样式: /**这里假定头部高度是100px*/ position: relative;top: 100px;/**关键样式如下,我这里上面有加定位,如果没用定位,下面的数值需根据实 ...
- scala概述入门和项目创建
1.scala简介 (1).scala基于JVM,与JAVA完全兼容,具有跨平台.可移植性好.方便的垃圾回收等特性: (2).scala比JAVA更加面向对象: (3).scala是一门函数式编程语言 ...
- Debug --> 使用USTC-TK2016工具对USTC-TFC2016数据集进行处理
文件介绍: https://blog.csdn.net/u010916338/article/details/86511009?spm=1001.2101.3001.6661.1&utm_me ...
- fiddler 实现跨域
static function OnBeforeResponse(oSession: Session) { ... if(oSession.uriContains("要处理的url" ...
- Vue2路由跳转传参,获取路由参数,Vue监听路由
1 this.$router.push({ 2 // name:路由组件名 3 name: routeName, 4 query: { 5 mapId:this.mapId 6 } 7 }) 8 9 ...
- Leetcode457
A very absurd description for this problem, but people can get the idea by looking at the examples.. ...
- redis面试题汇总
1redis持久化机制 redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化,当redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的 2缓 ...