热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谁动了你的cookie

谁动了你的cookie呵呵,标题只是为了好玩。最近好几个人问我,cookie到底是什么,能不能用通俗的语言解释一下。他们只知道cookie的字面意思是小甜饼,

谁动了你的COOKIE

 

呵呵,标题只是为了好玩。

 

最近好几个人问我,COOKIE到底是什么,能不能用通俗的语言解释一下。他们只知道COOKIE的字面意思是小甜饼,似乎与安全隐私有关。至于COOKIE的具体用途,全然不知。这个小甜饼与网络如何扯上关系,似乎风马牛不相及的事情。

 

实际上,有些命名规则,是说不清道不明的,一定置身于作者所在的文化背景下,才能体会作者的深意。比如,Java为什么叫Javagoogle为什么叫googleapache为什么叫apache,如此等等,如果当事人不给点提示,我们是无法知道这些名字来历的。

 

抛开小甜饼还是小咸饼不谈,我们先解释一下COOKIE的功能吧。这要从HTTP协议说起,HTTP是一种无状态协议,即按HTTP协议本身要求,前后两次请求是没有依赖关系的,比如你先浏览哪个网页,再浏览哪个网页,HTTP协议本身是不作限制的。这也正常,协议只提供机制,而不提供策略,完全是情合理的。

 

问题在于现实不同于理想,在实际应用中,一些请求是有依赖关系的,最常见的信箱、论坛和博客等,只有登录成功后,才能使用它的全部功能。登录了,你才能收发邮件,才能发贴子,才能写博客。服务器就需要知道你是否登录了,这个信息就是状态,即登录状态。

 

这个矛盾如何解决呢?如何在无状态的协议上实际有状态的服务呢?得有一种方法才行,这种方法就是COOKIE,说白了,COOKIE就是WEB服务器保存客户端(即浏览器)中的状态信息,在后面请求中,浏览器会把这些信息回传给WEB服务器,WEB服务器通过这些COOKIE检查是否登录过了。当然COOKIE不限于保存登录信息,它只是一种技术手段,服务器想用它保存什么都行,看需要而定。

 

COOKIE为什么会涉及到安全问题呢?这是显而易见的,虽然一般COOKIE都是经过加密处理过的,正如保险箱里的钱未必是保险的一样,加密后的信息未必不能被泄露。对于设计得不好的服务器程序来说,COOKIE可以直接被非法利用。

 

既然把COOKIE放在客户端(即浏览器)会有安全隐患,为什么不把这些状态放在服务器上呢?其实,这也是迫不得已的,这种做法从技术实现上考虑,没有丝毫困难。但是在现实中行不通,你想想,一个网站可能被数以千万的用户使用,有的状态信息可能要保存数月之久,这要保存多少信息!这种做法开销太大。

 

服务器在请求客户端(即浏览器)保存信息时,在下传的HTTP响应头中包含Set-COOKIE字段,在客户端(即浏览器)回传信息给服务器时,在HTTP请求头中包含COOKIE字段。

 

COOKIE的格式为:

key1=value1;key2=value2; expires=...; domain=...; path=...; secure

l         key1=value1;key2=value2;代表服务器所要保存的有效数据。

l         expires表示COOKIE的生命期,过期之后就无效了,比如有的网站要求你过一段时间后重新登录,就是通过它来实现的。

l         Domainpath表示COOKIE的作用范围,即在哪些网网页上有效。

l         Secure表示该COOKIE是不是只适用于HTTPS的请求。

 

下面是一个例子:

telnet www.google.com 80

HEAD /intl/zh-CN/ HTTP/1.1

Host: www.google.com

 

 

HTTP/1.1 200 OK

Cache-Control: private

Content-Type: text/html

Set-COOKIE:PREF=ID=2595b468a53b7221:NW=1:TM=1145015023:LM=1145015023:S=iASetSIzh8_sHPue; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com

Server: GWS/2.1

Content-Length: 0

Date: Fri, 14 Apr 2006 11:43:43 GMT

 


推荐阅读
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
author-avatar
飞飞飞070801
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有