对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数据库操作面向对象的优点
Oct 09 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
php 判断网页是否是utf8编码的方法
Jun 06 PHP
php实现图片等比例缩放代码
Jul 23 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
php发送http请求的常用方法分析
Nov 08 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
php curl操作API接口类完整示例
May 21 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
PHP学习之PHP表达式
2006/10/09 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
深入理解JavaScript中的对象
2015/06/04 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
python 自动批量打开网页的示例
2019/02/21 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
Python同时迭代多个序列的方法
2020/07/28 Python
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
贪污检举信范文
2015/03/02 职场文书
台风停课通知
2015/04/24 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
教你怎么用python selenium实现自动化测试
2021/05/27 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python