【Try to Hack】Cookie和Session
📒博客主页:开心星人的博客主页
🔥系列专栏: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采用的就是这种方式,但是也可以替换成其他形式。
- 点赞
- 收藏
- 关注作者
评论(0)