当前位置:网站首页>【Try to Hack】Cookie和Session
【Try to Hack】Cookie和Session
2022-06-29 17:26:00 【华为云】
博客主页:开心星人的博客主页
系列专栏:Try to Hack
欢迎关注点赞收藏️留言
首发时间:2022年5月21日
作者水平很有限,如果发现错误,还望告知,感谢!
本文很多内容摘自这篇,仅作为自己学习的记录
@toc
1.Cookie和Session区别
①Cookie可以存储在浏览器或者本地,Session只能存在服务器
②session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象(都是键值对的形式)
③Session比Cookie更具有安全性(Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击)
④Session占用服务器性能,Session过多,增加服务器压力
⑤单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session是没有大小限制和服务器的内存大小有关。
2.Cookie
流程:第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地(浏览器会将Cookie保存在内存中,或者是保存在客户端的硬盘中),当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。
生存周期:Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。
3.Session
流程:
1、session的创建:session是在客户端与服务器交互的过程中,由服务器创建的,并且会返回一个session的Id给客户端,一个会话只能有一个session对象;
2、在此后的交互过程中,客户端在请求中带上这个ID;
3、服务器可根据此Session ID获取到对应的保存在服务器内存中的session内容,以便于识别用户并提取用户信息。
一般情况下客户端session的ID都是通过Cookie的方式与服务器交互的,对于客户端禁用了Cookie的情况,可以通过在请求的Url中带上这个Session ID达到使用Session的目的。(也有一些在页面表单隐藏字段添加session id的,但是需要请求有提交表单的行为时才可实现session交互)
会话:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
Session 代表着服务器和客户端一次会话的过程。Session 对象存储特定用户会话所需的属性及配置信息。==这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。==
敲重点,CSRF的利用点
【Try to Hack】CSRF(一)
Session的作用范围:
1、一般来说,每次请求不同的域都会新创建一个session
2、对于多标签的浏览器来说,在一个浏览器窗口中,多个标签同时访问一个页面,session是一个。
3、对于多个浏览器窗口之间,同时或者相隔很短时间访问一个页面,session是多个的,和浏览器的进程有关。
4、对于一个同一个浏览器窗口,直接录入url访问同一应用的不同资源,session是一样的。
缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
3.Cookie和Session结合使用
1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。
2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。
边栏推荐
- R语言使用自定义函数编写深度学习Leaky ReLU激活函数、并可视化Leaky ReLU激活函数
- How to solve the 2003 error of MySQL in Linux
- 为什么信息化 ≠ 数字化?终于有人讲明白了
- 毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?
- PCB板框的绘制——AD19
- 卷妹带你学数据库---5天冲刺Day1
- R语言ggplot2可视化:使用patchwork包(直接使用加号+)将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图
- A user level thread library based on C language
- regular expression
- 自学结构体(小甲鱼c语言)
猜你喜欢

PCB板框的绘制——AD19

Online text digit recognition list summation tool

How to solve MySQL 1045 error in Linux

函数计算异步任务能力介绍 - 任务触发去重
![[R language data science]: Text Mining (taking Trump's tweet data as an example)](/img/4f/09b9885915bee50fb40976a5002730.png)
[R language data science]: Text Mining (taking Trump's tweet data as an example)

SpingMVC请求和响应
Master slave replication of MySQL

PCB frame drawing - ad19

controller、service、dao之间的关系

Naacl 2022 | distillation of machinetranslation SOTA model
随机推荐
C language practice ---- pointer string and linked list
It is the same that robots can win gold medals without maintenance and out of bounds
NVIDIA安装最新显卡驱动
Why is informatization ≠ digitalization? Finally someone made it clear
Self taught structure (small turtle C language)
基于深度学习的Wiki中文语料词word2vec向量模型
mysql游标的作用是什么
Custom handlerinterceptor interceptor for user authentication
【Oracle】基础知识面试题
函数计算异步任务能力介绍 - 任务触发去重
LSB hidden items of stream carrier based on assembly implementation
Mysql高可用集群–MHA
Inheritablethreadlocal resolves message loss during message transmission between parent and child threads in the thread pool
Tencent cloud released orbit, an automated delivery and operation and maintenance product, to promote enterprise applications to be fully cloud native
R语言ggplot2可视化:使用patchwork包(直接使用加号+)将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图
Open source warehouse contribution - submit pr
R语言使用自定义函数编写深度学习线性激活函数、并可视化线性激活函数
R语言dplyr包filter函数通过组合逻辑(与逻辑)过滤dataframe数据中的数据、其中一个字段的内容等于指定向量中的其中一个,并且另外一个字段值大于某一阈值
Kubernetes部署Dashboard(WEB UI管理界面)
How MySQL queries character set codes of tables