Cookie-天使还是恶魔?
HTTP是一种无状态的协议-Web服务器不必保持与过去或者将来请求的任何信息。当一个Http请求到达服务器后,服务器总是这样认为的:"这小子,新来的!",但是服务器有没有理由保持用户的会话状态呢?当然有。例如,在对访问的授权中,服务器就不得不记住这些来历不明的坏小子么。通过什么手段能达到这样的目的呢?最为人熟悉的解决方案就是Cookie.下面我们就谈谈Cookie的工作原理和利弊.
1.Cookie的定义
Cookie是一种在HTTP中对状态进行管理的方式。它是一种少量的状态数据,由We站点服务器发送给浏览器,并代表服务器存储在用户的机器上。
2.使用Cookie的动机
服务器随其响应向浏览器发送一个Cookie,请求浏览器在随后的请求中包含此Cookie,采用这种方式,Web服务器就能在会话中跟踪用户。Cookie中的消息可能是唯一的,这样便可以单独的跟踪特定的用户,也可能是剪辑,使得服务器能够统一跟踪来自一家单位的所有用户。
比如,在一个电子商务网站中,如果没有Cookie,每当用户请求该站点的时候,都会要求用户填写一份标识自己身份的表单,这么繁琐的过程,用户会很快失去耐心。但引入了Cookie之后,这个问题就得到了很好的解决。比如在“购物车",用户将自己想要买的商品放入其中,那么Web服务器就会记住顾客想要买的商品列表,这样用户就像真的在超市一样,把自己想要的东西放入车里,等结账的时候,统一付费,当然你在购买的过程中,还可以把放入购物车的商品放回去。对用户和Web服务器来说,这无疑是一种福音。但有一句话说得好:"天下绝对没有免费的午餐",Cookie在被称为"Web上的甜饼"的同时,由于对用户隐私的影响,Cookie也成为备受争议的主题。
3.Cookie在浏览器中的使用
下图显示了Cookie在浏览器中的使用过程,
客户机将请求发送给原始服务器,原始服务器在其响应中包含一个含有Cookie值得标头(Set-Cookie),在未来所有对该服务器的请求中,客户端都会包含Cookie。注意在客户端存储Cookie的时候,并不对Cookie字符串(XYZ)进行任何的解释。服务器可以依据生成请求的客户端,相应对的剪辑字符串进行构造,并更改用于构造Cookie字符串的机制。该图也可以表明进行Cookie交互的时候,无须用户的参与,除非事先要求每当Cookie发出时,便向用户进行通知。这也就在意定程度上对用户的隐私造成了威胁。
当用户浏览器接受到Cookie之后,起初是存放于浏览器的内存中,当浏览器退出的时候,会以磁盘文件的形式写入稳定存储器中。在这个过程中有一定的规则,如果Cookie具有的超时时间设定大于当前浏览器退出时间,Cookie会存储,如果不大于,就不必要存储,这就是有人说的设置了超时的Cookie会存储,而没有设置的Cookie只用于浏览器会话。Cookie最多4KB的长度,对于单独的浏览器来说,它为每个服务器或者域提供最多20个Cookie,总共可提供300个Cookie。
4.Cookie的隐私问题
Cookie得到了广泛的应用,但同时被怀疑会引起对个人隐私的侵犯。开始的时候,如果浏览器设定允许Cookie,许多的用户甚至不知道他们在发送Cookie,Cookie用明文发送,而且用Http嗅探工具,也能很简单的探到Cookie信息 ,而数据包在网络中传输的时候,Cookie的信息也能够被别有用心的人修改。另外,由于服务器可能使用Cookie的一部分作为后端数据库的索引,如果对Cookie进行了修改,会造成数据库中同用户无关的那部分数据出现不为人知的改动。许多的用户不知道谁有他们的Cookie的访问权以及对Cookie信息作了些什么,例如Cookie可以在公司间共享,这样就可以被别有用心的非法出售 .
为了证明上述说法,我做了一个简单的测试程序,然后用HttpWatch这款Http嗅探工具,进行嗅探 从图中可以看出 ,能很容易的获得Cookie的值,当然如果是用户自己,那无所谓了,但是一些木马,病毒如果也能够获得,那就泄露了用户的隐私。
此外,Cookie信息由原始服务器不同的另一个服务器进行传递,问题就会变得更加严重。比如有这样一种情形,用户访问门户站点A,网址:www.a.com,A网站要收集用户的信息可以通过以下方式,设置一个专门用于收集信息的站点s.a.com,比如访问 www.a.com/1.aspx,站点A首先将该请求重定向到s.a.com,形成这样的请求 s.a.com/count.aspx?return=www.a.com/1.aspx,这样的话,s.a.com就可以将cookie的信息收集起来,然后再重定向给 www.a.com/1.aspx,但用户并不知道有这么一个繁琐的过程。就像一个人司机接受交警检查,司机出示了驾驶证,交警可能将该驾驶证传递给其他人看,然后再交回司机手里一样,这样司机的隐私信息就有更大的风险被曝漏。如图:
对于服务器而言,Cookie也可能是危险的,比如站点A是一个联盟,他下面有类似于代理的用户,并且分级别,比如代理A,代理B都属于1级代理,1级代理下面有相应的子代理,那么很可能代理A就可以偷窥到代理B的子代理信息,如果服务端权限系统不完善的话,用户A可以仿造一个代理B的标识,利用自己是一级代理的身份绕过一些系统验证,在系统疏忽后者漏洞出冒充代理B。造成对服务器和其他用户的威胁。
Cookie无疑在web世界中充当了天使,它能够使本来没有状态的HTTP的记性变好,但同时在对用户隐私保证和对服务器潜在威胁上,它可以说是一个恶魔。
使用Cookie的时候一定要注意这样的问题是Cookie是保存在客户端的,服务端这样是删除不了Cookie的,见一哥们这样使用,Response.Cookies.Remove(Response.Cookies[0]);正确使Cookie过期的方式向客户端发送一个过期的同名Cookie即可
转载于:https://www.cnblogs.com/jillzhang/archive/2007/02/12/647913.html
Cookie-天使还是恶魔?相关推荐
- 孩子花掉父母两年工资,游戏你到底是“天使”还是“恶魔”?
移动支付给生活带来便利,但对于但小雨(化名),游戏.支付两个词无疑是灾难! 湖南怀化中方县的小雨还在上6年级,一个含苞待放的年级,未来像花儿一样可期,但是他的生活却因一场疫情而改变了-- 天使VS恶魔 ...
- 每个人都是天使和恶魔化身的合体
每个人都是天使和恶魔化身的合体 每个人都可以行善 每个人也都可以作恶 天使并不遥远 --她就是我们冷静后的思想 恶魔其实就在眼前 --他是我们身体的放纵 有多少天使,就有多少恶魔 有多少善行,就有多少 ...
- eBPF双子座:天使or恶魔?
启示录 新约圣经启示录认为:恶魔其实本身是天使,但炽天使长路西法背叛了天堂,翅膀变成了黑色,坠落地狱,堕落成为恶魔.这些恶魔主宰著黑暗势力,阻碍人类与上帝沟通,无所不用其极.所以可以说天使和恶魔本来是 ...
- 天使与恶魔~“增值服务”
今天说的是增值,在中国任何概念都可以被玩的很"邪恶".想象一下电信增值业务,移动增值业务,免费网游增值道具.. 恨不得大刀砍之,倒是怀念起以前那种点卡的网游了,一次收费,平等玩之. ...
- 从 Linux 安全看,eBPF 的出现是“天使”还是“恶魔”?
[CSDN 编者按]eBPF 目前已经成了安全研究人员和黑客手中强大的工具,亦正亦邪,取决于使用者的选择. 作者 | 许庆伟 责编 | 王子彧 出品 | OpenAnolis(龙蜥) 启示录 新 ...
- eBPF 双子座:天使 or 恶魔?
01 启示录 新约圣经启示录认为:恶魔其实本身是天使,但炽天使长路西法背叛了天堂,翅膀变成了黑色,坠落地狱,堕落成为恶魔.这些恶魔主宰著黑暗势力,阻碍人类与上帝沟通,无所不用其极.所以可以说天使和恶魔 ...
- 总会用到的系列8:基金,可能纠缠一生的天使或者恶魔
之前写过一篇关于基金定投的文章<总会用到的系列2:你不理财财不理你的基金定投>,对于理财小白来说,基金定投算是一个比较靠谱的理财方案,我自己也定投了几个标的,效果也还不错.这篇主要反思自己 ...
- 人工智能:到底是天使还是恶魔?
最近,比尔盖茨公开表态称,自己对人工智能感到担忧,而且不明白为什么有那么多人并不担心这种技术对未来的影响.两周前,马斯克和著名物理学家史蒂芬·霍金也都签署了一封公开信,呼吁在人工智能创新方面采取安全措 ...
- 内存泄漏——恶魔天使之战(操作内存必看)
文章目录 前言 一.c++操作内存的优点与缺点 二.内存操作 1.指针 泄漏1: 2.开辟新空间--new 内存泄漏2: 总结 前言 不知道大家有没有听过这样一句话:一个c++程序员,内存泄漏了,一包 ...
- 计算机安全的基本要求是什恶魔,公考面试真题:2018年3月17日银监会(计算机岗)面试真题1...
公务员面试如何积累热点素材.如何快速修炼自我表达能力,来听面试来了 每周一到周五,22:00准时更新 周一至周三:公考面试热点素材 周四至周五:公考面试真题解析 更多面试知识请关注新浪微博@华图在线官 ...
最新文章
- windows下硬盘安装mint10
- VMware 虚拟机 linux执行 ifconfig 命令 eth0没有IP地址
- springMVC 统一异常处理异常处理类的使用
- 采用HttpModules来重写URLS
- 前端学习(1393):多人管理项目13加密实现
- jQuery find() 方法的使用总结
- 关于lucene2.2部分代码
- 20180513 实参 形参
- 测试过程中用shell的地方_软件测试之学习shell流程控制结构
- lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】
- Google Chrome Your browser is not compatible with FlexPaper问题解决
- 10分钟看懂财务报表分析,只需掌握一个公式!
- python之excel多表合并
- 华为ensp OSPF单区域配置
- The server encountered an internal error () that prevented it from fulfilling this request.
- 如何控制舵机的速度?
- 字体图标的下载与使用
- 那些不能在一起吃的水果搭配
- ModelSim-Altera路径找不到或者不正确的解决办法
- 生鲜配送如何让“订单管理”变得简单?
热门文章
- CURL 发送POST请求
- 推特裁员大反转!马斯克哭求被裁员工回来
- 如何提升口头表达能力?
- 一道简单的ctf 分析
- sql无法打开键: UNKNOWN\Components\8922126C77B064F4683FF04644421772\4BE06D23D119
- 2022年首个交易日特斯拉股价暴涨 马斯克重回3000亿美元身价
- Qt界面优化:Qt窗体控件设置
- stm32学习笔记---ADC电压采集
- iOS-bug Xcode 14.3版本运行项目报错File not found: /Applications/Xcode.app/Contents/Developer/...
- 外汇投资有什么刷单技巧?