对Session和Cookie的区分与解释


Posted in PHP onMarch 16, 2007

对Session和Cookie的区分与理解 
先说session
对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。但还是讲讲,别嫌老~
有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法,如果有错误请不要朝丢东西,金条和硬币除外。
有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而从一些比较实际的角度看SESSION。
首先要先说SESSION是干什么的,SESSION是可以存储针对与某一个用户的IE以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以及对各个类型数据的下载许可,如图片,声音以及FLASH。
数据实际传输内容:IE到服务器
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language0: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: www.jh521.com
Connection: Keep-Alive
服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储
并同时返回相关页面的下载数据,如下:服务器到IE
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 30 Nov 2003 16:41:51 GMT
Content-Length: 21174..Content-Type: text/html
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
Cache-control: private
然后就是页面HTML代码此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你而在服务器上设置SESSION("name")="name"完全可以看成是SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
或者
SESSION(SESSIONID)("name")="name"
这样,SESSION就区分开用户了。
而当服务器反馈这个ID的时候会看这个ID有没有被使用。如果有在换一个
反正不会让你重复,如果想模拟某人的SESSION的ID来进行欺骗是可以的。不过要获取到对方IE传输信号,并且在保证当时这个SESSIONID没有被取消的情况下才可能实施。
不过要是我有那时间直接通过POST信号找他NAME和PASS了。我可不费这个劲,想必一些人明白了了SESSIONID到底是如何工作的,那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类,但是属于一种工作模式,用户和服务器传输私有数据.当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并存放,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候。
那么为什么要用COOKIE而不用SESSION呢
看下区别
有效时间以及存储方式 传输内容
COOKIE 可设置并在本地保留 明码信息
SESSION 在IE不关闭并服务器不超时 只有SESSIONID
当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE,
因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前)
而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录
在下次登入的时候会请求新的SESSIONID
而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE
如果用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。
那么如果我通过一定手段,比如直接修改COOKIE记录,把USER修改成ADMIN呢~~
就麻烦了。
但存储用户名和密码或者网站的配色方案这样的信息,用COOKIE是最好的
好,有点累了,在说说这个东西
Request.ServerVariables("HTTP_REFERER")
我想有一些人通过这个Request.ServerVariables("HTTP_REFERER")
来进行一些关键性限制,特别是对付远程提交以及非法侵入。
那么我就要提醒下服务器取得的HTTP_REFERER信息完全是IE传输给服务器的,可以模拟
而且难度不大,用不到半个小时就可以用VB做出一个针对HTTP_REFERER入侵程序。
(可惜我原先那他没干正经事情,做WEB游戏挂机程序来的)
附一个不错的回贴:
------------------------------------------------------------------------------------------------------
COOKIE 是本地文件,是40大盗在阿里巴巴家做的记号,
或者是送牛奶的人在你家门口钉的箱子。
SESSION 是服务器端内存,是你洗澡时浴池发给你的钥匙。
自己专用,可以开自己的好多箱子。
APPLICATION 是公共浴池。
在这里能看见所有人,包括ppmm哦:)。 

PHP 相关文章推荐
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
php二维码生成
Oct 19 PHP
XHProf报告字段含义的解析
May 17 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 PHP
PHP中cookies使用指南
Mar 16 #PHP
PHP学习资料汇总与网址
Mar 16 #PHP
PHP编码规范-php coding standard
Mar 16 #PHP
PHP操作文件方法问答
Mar 16 #PHP
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 #PHP
PHP中for循环语句的几种变型
Mar 16 #PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 #PHP
You might like
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
php格式化电话号码的方法
2015/04/24 PHP
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
详解python中*号的用法
2019/10/21 Python
Django 自动生成api接口文档教程
2019/11/19 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Pycharm修改python路径过程图解
2020/05/22 Python
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
C#面试常见问题
2013/02/25 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
领导接待方案
2014/03/13 职场文书
家长通知书家长评语
2014/04/17 职场文书
繁星春水读书笔记
2015/06/30 职场文书
同学会感言
2015/07/30 职场文书
找规律教学反思
2016/02/23 职场文书
话题作文之成长
2019/12/09 职场文书