cookie 和 token 都存放在 header 中,为什么不会劫持 token?____token和cookie的区别

cookie 和 token 都存放在 header 中,为什么不会劫持 token?

cookie:登录后服务端生成的sessionid,并在http请求里返回到客户端,同时服务端保存sessionid,以后客户端的每次http请求都带上cookie(sessionid),服务端会获取cookie(sessionid)然后验证用户的身份。所以拿到cookie就拿到了sessionid,就可验证通过。同时浏览器会自动携带cookie;

token:同样是登录后服务端返回一个token,客户端保存起来,在以后http请求里手动的加入到请求头里,服务端根据token 进行身份的校验。浏览器不会自动携带token。

CSRF 跨站点请求伪造:通过浏览器会自动携带同域cookie的特点。cookie的传递流程是用户在访问站点时,服务器端生成cookie,发送给浏览器端储存,当下次再访问时浏览器会将该网站的cookie发回给服务器端

如果用户登陆了A网站,拿到了cookie,又点击了恶意的网站B。

B收到请求以后,返回一段攻击代码,并且发出一个请求给网站A。

浏览器会在用户不知情的情况下,根据B的请求,带着cookie访问A。

由于HTTP是无状态的,A网站不知道这个请求其实是恶意网站B发出的,就会根据cookie来处理请求,从而执行了攻击代码。

而浏览器不会自动携带 token,所以不会劫持 token。

XSS:跨站脚本工攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者JavaScript进行的一种攻击

cookie和token都是不安全的

token和cookie的区别

HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证

1、cookie

用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用户的sessionID

数据需要客户端和服务器同时存储

用户再进行请求操作时,需要带上cookie,在服务器进行验证

cookie是有状态的

2、token

用户进行任何操作时,都需要带上一个token

token的存在形式有很多种,header/requestbody/url 都可以

这个token只需要存在客户端,服务器在收到数据后,进行解析

token是无状态的

token相对cookie的优势

1、支持跨域访问 ,将token置于请求头中,而cookie是不支持跨域访问的;

2、无状态化, 服务端无需存储token ,只需要验证token信息是否正确即可,而session需要在服务端存储,一般是通过cookie中的sessionID在服务端查找对应的session;

3、 无需绑定到一个特殊的身份验证 方案(传统的用户名密码登陆),只需要生成的token是符合我们预期设定的即可;

4、 更适用于移动端 (Android,iOS,小程序等等),像这种原生平台不支持cookie,比如说微信小程序,每一次请求都是一次会话,当然我们可以每次去手动为他添加cookie,详情请查看博主另一篇博客;

5、 避免CSRF跨站伪造攻击 ,还是因为不依赖cookie;

6、 非常适用于RESTful API ,这样可以轻易与各种后端(java,.net,python…)相结合,去耦合

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语言inc c,汇编语言练习

习题一1.在计算机内部,计算机能够直接执行的程序语言是。A.汇编语言 B。C语言C.机器语言 D。高级语言2.在堆栈段中,存放栈顶地址的寄存器是。A.IP B.SP C&…

python降维之时间类型数据的处理_使用Python进行数据降维|线性降维

前言为什么要进行数据降维?直观地好处是维度降低了,便于计算和可视化,其深层次的意义在于有效信息的提取综合及无用信息的摈弃,并且数据降维保留了原始数据的信息,我们就可以用降维的数据进行机器学习模型的训练和预测…

cookie、Session、Token、sessionStorage、localStorage简介__Token放在 cookie, sessionStorage 和 localStorage中区别

cookie、Session、Token、sessionStorage、localStorage简介 cookie 是一个非常具体的东西,只得是浏览器里永久存储的一种数据,是浏览器实现的一种数据存储功能。Cookie在计算机中是个存储在浏览器目录中的文本文件,当浏览器运行时&#xf…

歌星大奖赛C语言程序,C_歌星大奖赛

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。*问题分析与算法设计这个问题的算法十分简单,但是要注意在程序中判断最大、最…

c语言树莓派音乐播放器,使用web端来控制我的树莓派播放音乐

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?web端控制树莓派播放音乐,PHPNodeJSmpg123,粗糙版。实现后还可以做个app什么的。代码git用到的代码内容可以在这里看~nodempg.js启动一个se…

Nginx学习_狂神

Nginx 公司产品出现瓶颈? 我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。 但是慢慢的,使用我们平台的用户…

c语言中运算符的读音是什么,操作符、运算符,operator,音标,读音,翻译,英文例句,英语词典...

补充资料:二进制算术运算二进制算术运算binary arithmetic operation二.165. 原码两位索法为了提高运算速度,在1次操作中可同时考虑两位乘数,求得与两位乘数相对应的部分积,其速度比一位乘法提商1倍,规则如下: 又丫1二…

python怎么重复输出_如何根据输出在Python中重复函数?

你可以用while循环来实现这一点。只要没有break或sys.exit,它就返回到start,这意味着这里的每一个错误输入。希望这有帮助def read_the_file(output):while True:print """Do you want me to read your newly created file?Type [Y]es o…

C语言读取load格式文件,求指导,如何用c语言实现读取*.raw格式图像

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*** 这个程序是读取jpg图像的** 后续加上jpg图像打开和存放*/ #include #include #include #include #include #define SOI 0xD8 //文件头#define EOI 0xD9 //文件尾#define APP0 0xE0 //定义交换格式和图像识别信息#define SOF0 …

js当前时间格式化_JS时间格式化

因为new Date().toLocaleString() 在安卓和ios上的格式不一致,所以尽量自己写format生成一个时间数组作为一个简单的举例,我序列化一周的时间对象声明参数let lastMonth []let daylong 86400000判断时间值是否小于9const formatNumber num > { num…

android json传输数据到服务器,Android中post请求传递json数据给服务端的实例

在最近的项目中有个需求是这样的:入参封装成JSON,EXAMPLE:{ "uuid": "iamauuid","clientType": "AND","content": "{\"gender\":\"F\",\"name\":\&qu…

springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程

springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步&#xff1a; 1. 在项目中导入maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.4.0</versi…

window.print 点击取消后再次打印无效_教程 | 图书馆自助复印打印机使用方法

图书馆自助复印打印机教程当当当&#xff01;教程君又来辽~今天为大家介绍的是咱们图书馆霸气十足的自助复印打印机实行全程无人化管理为读者提供自助打印、复印、扫描服务是你学习的小帮手&#xff01;实行全程无人化管理为读者提供自助打印、复印、扫描服务读者可在校园内任意…

android 支付模块封装,Android集成支付----支付宝支付总结与封装

前言类似于Android集成支付----微信支付总结与封装(可以查看本人另外一篇文章)&#xff0c;本文对支付宝支付进行一个总结与封装。相比于微信支付&#xff0c;支付宝支付没有那么多坑。集成支付宝支付SDK这里只是简要介绍&#xff0c;重点解说有坑的地方&#xff0c;具体参考官…

Springboot系列之Shiro、JWT、Redis 进行认证鉴权

Springboot系列之Shiro、JWT、Redis 进行认证鉴权 Shiro架构 Apache Shiro是一个轻量级的安全框架 Shiro可以非常容易的开发出足够好的应用&#xff0c;其不仅可以用在JavaSE环境&#xff0c;也可以用在JavaEE环境。 Shiro可以帮助我们完成&#xff1a;认证、授权、加密、会…

kettle 先删除后插入_Kettle:使用触发器和快照表进行增量数据同步

主库为Oracle 11g数据库&#xff0c;针对需要同步的表建立增量数据临时表以及反向并通过水壶定时同步到PostgreSQL数据库。1&#xff0c;主库创建快照表和快照注意&#xff1a;快照表结构和源表结构必须一致&#xff01;--创建插入快照表 CREATE TABLE SPWUSER.WEB_CUSTOMER_IN…

c 语言中fgetc函数,C 库函数 - fgetc()

描述C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符)&#xff0c;并把位置标识符往前移动。声明下面是 fgetc() 函数的声明。int fgetc(FILE *stream)参数stream -- 这是指向 FILE 对象的指针&#xff0c;该 FILE 对象标识了要在上面执行操…

SpringBoot中使用Shiro和JWT做认证和鉴权

最近新做的项目中使用了shiro和jwt来做简单的权限验证&#xff0c;在和springboot集成的过程中碰到了不少坑。做完之后对shiro的体系架构了解的也差不多了&#xff0c;现在把中间需要注意的点放出来&#xff0c;给大家做个参考。 相对于spring security来说&#xff0c;shiro出…

python 数字大小排序_python list字符按数字大小排序

python list字符按数字大小排序在把list写到csv过程中&#xff0c;遇到一个list的排序问题&#xff0c;list中存放的是数字字符&#xff0c;需要按数字大小来排序测试源码testList [1, 5, 2, 10, 50, 21, 31, 3, 7]print(testList{}.format(testList))normalSortList testLis…

android 手机wifi重启,路由器要不要每天重启?多亏宽带师傅透露,难怪网速一天比一天慢!...

没WiFi&#xff0c;不成活&#xff01;手机和WiFi之间&#xff0c;就像空调加棉被&#xff0c;谁也离不开谁。图片来源于网络如今WiFi已经填满了我们生活的每个角落&#xff0c;很难想象&#xff0c;如果哪天没了网&#xff0c;世界会变成什么样&#xff01;可是家里的WiFi是越…