Cookies 和 Session的详解及区别


Posted in Javascript onApril 21, 2017

Cookies 和 Session的详解及区别

1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。

2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。

注:为这个用户创建的Cookie的名称是aspsessionid。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。
session 从字面上讲,就是会话。这个就类似于你和一个人交谈,你怎么知道当前和你交谈的是张三而不是李四呢?对方肯定有某种特征(长相等)表明他就是张三。session 也是类似的道理,服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,大家都默认采用 cookie 的方式。

3.cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。

4.cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。

简单的说,当你登录一个网站的时候:

· 如果web服务器端使用的是session,那么所有的数据都保存在服务器上,
客户端每次请求服务器的时候会发送当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志
,以确定用户是否登录或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造,
但是如果你能够获取某个登录用户的sessionid,用特殊的浏览器伪造该用户的请求也是能够成功的。
sessionid是服务器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,
也不是没有重复的可能性. 
· 如果浏览器使用的是cookie,那么所有的数据都保存在浏览器端,比如你登录以后,
服务器设置了cookie用户名,那么当你再次请求服务器的时候,浏览器会将用户名一块发送给服务器,
这些变量有一定的特殊标记。服务器会解释为cookie变量,所以只要不关闭浏览器,那么cookie变量一直是有效的,
所以能够保证长时间不掉线。如果你能够截获某个用户的cookie变量,然后伪造一个数据包发送过去,
那么服务器还是认为你是合法的。所以,使用cookie被攻击的可能性比较大。如果设置了的有效时间,
那么它会将cookie保存在客户端的硬盘上,下次再访问该网站的时候,浏览器先检查有没有 cookie,
如果有的话,就读取该cookie,然后发送给服务器。如果你在机器上面保存了某个论坛 cookie,
有效期是一年,如果有人入侵你的机器,将你的cookie拷走,然后放在他的浏览器的目录下面,
那么他登录该网站的时候就是用你的的身份登录的。所以cookie是可以伪造的。当然,伪造的时候需要注意,
直接copy cookie文件到cookie目录,浏览器是不认的,他有一个index.dat文件,存储了cookie文件的建立时间,
以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从有效时间上骗过浏览器。

5.两个都可以用来存私密的东西,同样也都有有效期的说法,区别在于session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。

(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JS 实现完美include载入实现代码
Aug 05 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
AngularJS中取消对HTML片段转义的方法例子
Jan 04 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
JavaScript简单生成 N~M 之间随机数的方法
Jan 13 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
JavaScript错误处理操作实例详解
Jan 04 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
Vue.js实现立体计算器
Feb 22 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 #Javascript
原生javascript实现分页效果
Apr 21 #Javascript
微信小程序 跳转方式总结
Apr 20 #Javascript
微信小程序 setData的使用方法详解
Apr 20 #Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
Apr 20 #Javascript
微信小程序中form 表单提交和取值实例详解
Apr 20 #Javascript
ES6新特性一: let和const命令详解
Apr 20 #Javascript
You might like
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
JavaScript Split()方法
2015/12/18 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python2与Python3的区别实例总结
2019/04/17 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
12月红领巾广播稿
2014/02/13 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
2014个人年度工作总结
2014/12/15 职场文书
刘胡兰观后感
2015/06/16 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL