转自:http://www.cnblogs.com/TankXiao/archive/2013/04/15/2848906.html

Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的【细说Cookie】, 让我学到了很多东西。Fish的这篇文章写得太经典了。 所以我这篇文章就没有太多内容了。

最近我打算写一个系列的HTTP文章,我站在HTTP协议的角度, 说说我对Cookie的理解。

阅读目录

  1. Cookie是什么,有什么用,为什么要用到Cookie
  2. Cookie的分类
  3. Cookie存在哪里
  4. 使用和禁用Cookie
  5. Fiddler查看HTTP中的Cookie
  6. 网站自动登陆的原理
  7. 截获Cookie,冒充别人身份
  8. Cookie和文件缓存的区别
  9. Cookie泄露隐私
  10. P3P协议

Cookie是什么,有什么用,为什么要用到Cookie

请看Fish Li 写的【细说Cookie】

Cookie的分类

可以大致把Cookie分为2类: 回话cookie和持久cookie

会话cookie: 是一种临时的cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话cookie就被删除了

持久cookie: 存储在硬盘上,(不管浏览器退出,或者电脑重启,持久cookie都存在), 持久cookie有过期时间

Cookie存在哪里

Cookie是存在硬盘上,  IE存cookie的地方和Firefox存cookie的地方不一样。  不同的操作系统也可能存cookie的地方不一样。

不同的浏览器会在各自的独立空间存放Cookie, 互不干涉

以我的windows7, IE8为例,  cookie存在这: C:\Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Files

注意: 缓存文件和cookie文件,是存在一起的, 都在这个目录下。

你也可以这样找, 打开IE,点击Tools->Internet Options->General Tab下的->Browsing history下的Setting按钮,弹出的对话框中点击View files.

不同的网站会有不同的cookie文件

使用和禁用Cookie

IE:   工具->Internet 选项 -> 隐私

Fiddler查看HTTP中的Cookie

浏览器把cookie通过HTTP Request 中的“Cookie: header”发送给Web服务器

Web服务器通过HTTP Response中的"Set-Cookie: header"把cookie发送给浏览器

使用Fiddler可以清楚地看到cookie在HTTP中传递。 Fiddler工具中可以清晰的看到Http Request 中的Cookie, 和Http Response中的cookie

实例: 启动Fiddler,  启动浏览器访问一些购物网站,就可以看到。

网站自动登陆的原理

我们以”博客园自动登陆“的例子,来说明cookie是如何传递的。

大家知道博客园是可以自动登陆的。 如下图,这个是什么原理呢?

假如我已经在登陆页面输入了用户名,密码,选择了保存密码,登陆。

(这时候,其实在你的机器上保存好了登陆的cookie, 不信你可以按照上节介绍方法去你的电脑上找下博客园的cookie)

当我下次访问博客园流程如下。

1. 用户打开IE浏览器,在地址栏上输入www.cnblogs.com.

2. IE首先会在硬盘中查找关于cnblogs.com的cookie. 然后把cookie放到HTTP Request中,再把Request发给Web服务器。

3. Web服务器返回博客园首页(你会看到你已经登陆了)。

截获Cookie,冒充别人身份

通过上面这个例子,可以看到cookie是很重要的,识别是否是登陆用户,就是通过cookie。  假如截获了别人的cookie是否可以冒充他人的身份登陆呢?  当然可以, 这就是一种黑客技术叫Cookie欺骗。

利用Cookie 欺骗, 不需要知道用户名密码。就可以直接登录,使用别人的账户做坏事。

我知道有两种方法可以截获他人的cookie,

1. 通过XSS脚步攻击, 获取他人的cookie. 具体原理可以看 [Web安全性测试之XSS]

2. 想办法获取别人电脑上保存的cookie文件(这个比较难)

拿到cookie后,就可以冒充别人的身份了。 这个过程我就不演示了。

Cookie和文件缓存的区别

很多人会把cookie和文件缓存弄混淆, 这两个完全是不一样的东西。唯一的相同之处可能是它们俩都存在硬盘上,而且是存在同一个文件夹下。

关于HTTP缓存请看这 【HTTP协议之缓存

我们在IE中可以选择分别删除Cookie和缓存文件

Cookie 泄露隐私

2013年央视的315晚会上, 曝光了很多不法公司利用Cookie跟踪并采集用户的个人信息,并转卖给网络广告商,形成了一条窃取用户信息的灰色产业链。从而实现广告准确投放。严重干扰了用户的正常网络应用,侵害了个人的隐私和利益。

我经常就在门户网站上发现广告位上显示的是我在电商网站上流量过的商品。  这就是我的cookie被泄露了。

目前在欧洲, 已经对Cookie立法, 如果网站需要保存用户的cookie, 必须弹出一个对话框,要用户确认后才能保存Cookie.

P3P协议

从上面看来, Cookie 是一个比较容易泄露用户隐私和危险的东西。  有没有办法保护个人用户隐私呢?    那就是P3P协议

P3P是一种被称为个人隐私安全平台项目(the Platform for Privacy Preferences)的标准,能够保护在线隐私权,使Internet冲浪者可以选择在浏览网页时,是否被第三方收集并利用自己的个人信息。如果一个 站点不遵守P3P标准的话,那么有关它的Cookies将被自动拒绝,并且P3P还能够自动识破多种Cookies的嵌入方式。p3p是由全球资讯联盟网 所开发的。

转HTTP协议 --- Cookie的更多相关文章

  1. 《图解HTTP》读书笔记(三:无状态协议/cookie管理状态)

    HTTP是一种不保存状态,即无状态(stateless)协议.HTTP协议自身不对请求和响应之间的通信状态进行保存. ——HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Co ...

  2. http协议cookie结构分析

    Http协议中Cookie详细介绍   Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失 ...

  3. HTTP协议--cookie、session、缓存与代理

    1 Cookie和 Session Cookie和 Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决 HTTP无状态的问题而所做的努力. Session可以用 Cook ...

  4. HTTP协议COOKIE和SESSION有什么区别

    1.为什么会有COOKIE这种机制 首先一种场景, 在一个网站上面, 我发起一次请求,那服务器怎么知道我是谁?是谁发起的这次请求呢,  HTTP协议是无状态的协议, 浏览器的每一次请求,服务器都当做一 ...

  5. HTTP协议-Cookie和Session详解

    前言: 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的跟踪技术就是Cookie和Session. Cookie通过在客户端记录信息确定用户身份,Session通过在 ...

  6. http协议——cookie详解

    http是无状态的,所以引入了cookie来管理服务器与客户端之间的状态 与cookie相关的http首部字段有: 1.Set-Cookie:它一个响应首部字段,从服务器发送到客户端,当服务器想开始通 ...

  7. jmeter http协议---cookie处理

    使用jmeter测试的http接口的时候,经常遇到需要cookie做免登录等作用的情况,jmeter如何在测试http接口的时候加载所需cookie呢?主要分两步 一. 收集对应站点的cookie 1 ...

  8. ctfhub技能树—web前置技能—http协议—Cookie

    打开靶机环境 查看显示内容 根据提示,需要admin登录才能得到flag 题目介绍为Cookie欺骗.认证.伪造 介绍一下cookie和session 一.cookie: 在网站中,http请求是无状 ...

  9. HTTP协议学习---(九)cookie

    Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的[细说Cookie], 让我学到了很多东西.Fish的这篇文章写得太经典了. 所以我这篇文章就没有太多内容了. 最近我打算写 ...

随机推荐

  1. personal evolution

    自我清醒 认知自我的行为和心理 你确定你自己是出于理智而发出某种行为? 首先需要确定哪些是人的天性 认知失调理论 从众效应 晕轮效应 霍桑效应 马太效应 期望效应 刻板效应 破窗效应 安排思维 安排闲 ...

  2. windows10添加开机自启动程序

    1. 将要启动的程序创建快捷方式 2. 将创建的快捷方式放到以下文件夹中 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

  3. 强连通分量(Korasaju & Tarjan)学习笔记

    好久以前学过的东西...现在已经全忘了 很多图论问题需要用到强连通分量,还是很有必要重新学一遍的 强连通分量(Strongly Connected Component / SCC) 指在一个有向图中, ...

  4. 解决Tomcat端口被占用 及 启用失败等其它错误整理册

    使用管理员模式启动命令行工具. netstat -ano|findstr 获取了pid号 taskkill /pid /f 其中6428为pid号,可能有不同. -------- 有时遇到其它问题可以 ...

  5. Mininet实验 命令延伸实验扩展

    本文参照:Mininet 命令延伸实验扩展 步骤1:命令行创建拓扑 sudo mn --topo minimal 最小的网络拓扑,一个交换机下挂两个主机. sudo mn --topo linear, ...

  6. 转:常用svn命令

    在公司需要提交代码,常用的就是co.ci.add.up.和log 首先 svn help 可以看到 svn 所支持的全部命令: 命令不多,如果用过Tortoise SVN的客户端,从字面上也不难理解这 ...

  7. ssh connection refused

    执行sudo apt-get install openssh-server命令安装SSH服务

  8. 在 R 中使用 Python 字符串函数

    sprintf( )函数很强大,但并非适用于所有应用场景.例如,如果一些部分在模板中多次出现,那么就需要多次写一样的参数.这通常会使得代码冗长而且难以修改:sprintf("%s, %d y ...

  9. MySQL分页查询大数据量优化方法

    方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N适应场景: 适用于数据量较少的情况(元组百/千级)原因/缺点: ...

  10. 剑指 offer面试题22 栈的压入和弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...