`

HTTP协议 (七) Cookie

 
阅读更多

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 协议管理标准分析以及结构实现

    ### HTTP Cookie 协议管理标准分析以及结构实现 #### 基本原理及作用 Cookie是一种小型的数据存储机制,主要用于在网络应用中维护用户的会话状态。它被广泛应用于Web开发中,通过允许服务器存储少量信息到客户端...

    计算机后端-PHP视频教程. http协议11 http协议与cookie.wmv

    计算机后端-PHP视频教程. http协议11 http协议与cookie.wmv

    根据http获取cookie内容代码

    总之,获取HTTP报文头中的Cookie内容涉及HTTP协议的理解、网络库的使用(或自定义实现)以及报文头的解析。通过学习和实践,你将能够熟练地在C++中处理网络通信中的Cookie管理,从而更好地开发Web应用程序或服务。...

    cookie读写,子cookie

    这个过程使得服务器能够识别和跟踪用户,即使在无状态的HTTP协议下也能实现状态保持。 **Cookie的读取与写入** 在Java中,我们可以使用HttpServletResponse和HttpServletRequest接口来操作Cookie。写入Cookie的...

    认清http协议本质

    HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,它定义了客户端(浏览器或其他HTTP客户端)和服务器之间交换数据的格式和行为。要认清HTTP协议的本质,我们需要从以下几...

    易语言HTTP访问(带Cookie)模块源码

    在HTTP协议中,Cookie是一种用于维护客户端和服务器之间状态的小型文本文件。当用户访问一个网站时,服务器可能会发送一个Cookie到用户的浏览器,浏览器会将Cookie保存起来,当用户再次访问该网站时,浏览器会将之前...

    HTTP协议.zip_HTTP_HTTP协议

    **HTTP协议详解** HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它定义了客户端(通常是Web浏览器)与服务器之间的通信格式,用于从万维网服务器传输超文本到本地浏览器...

    HTTP协议详解_HTTP协议_

    3. 头部字段:HTTP请求和响应中包含各种头部字段,如Accept表示客户端接受的媒体类型,Content-Type定义数据的类型,Cookie和Set-Cookie用于管理会话。 4. 状态码:三位数字的状态码,如200表示成功,404表示未找到...

    Cookie浏览器

    Cookie浏览器是一种特殊的网络浏览工具,它利用了HTTP协议中的Cookie技术来实现特定功能,如网页登录绕过和邮箱免登录。Cookie是Web服务器在用户浏览器上存储的一小段数据,用于识别用户身份、保持登录状态、个性化...

    http协议中文版(http协议中文版)

    HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,它定义了客户端(如浏览器)和服务器之间交换数据的方式。这个协议是基于TCP/IP通信协议来传输数据的,用于从万维网...

    C#操作cookie,解密加密cookie

    通过`CookieContainer`,我们可以轻松地添加、删除和检索Cookie,这在处理HTTP请求时非常有用。 #### 2. 添加Cookie到CookieContainer 在给定的代码示例中,`upcookie`方法展示了如何将`CookieCollection`中的所有...

    EditThisCookie.crx cookie编辑导入导出利器

    curl是一个强大的命令行工具,用于传输数据,支持多种协议,包括HTTP、HTTPS。在curl中,可以使用`-b`选项指定一个Cookie文件,从而将EditThisCookie导出的Cookie信息应用到请求中。这使得开发者能够在不打开浏览器...

    C#cookie实现历史记录

    它们主要用于跟踪用户会话、保存用户偏好设置以及在无状态的HTTP协议中维护用户状态。在C#中,我们可以使用`System.Web.HttpCookie`类来操作Cookie。 1. **创建Cookie** 创建Cookie的基本步骤如下: - 创建一个`...

    post提交工具/cookie提交工具(php版,同时支持POST与cookie)

    POST方法是HTTP协议中用于传输大量数据的一种方式,而cookie则是用来存储用户会话信息的小型文本文件。 在【描述】中提到,用户对现有的POST工具感到不满,因此自行开发了这个PHP版本的工具。这个工具设计用于PHP...

    易语言取设cookie

    Cookie是在HTTP协议下,服务器发送到用户浏览器并保存在本地的一小块数据,它用于记录用户的浏览历史、登录状态等信息。在易语言中,处理Cookie主要有两个关键函数:`InternetSetCookieA` 和 `InternetGetCookieA`。...

    张孝祥_HTTP协议详解

    HTTP协议的特点是非连接性和无状态性,即每次请求和响应之间没有直接的关联,服务器不会保留关于用户会话的信息,除非通过Cookie等机制实现。 二、HTTP请求与响应 1. 请求:HTTP请求由请求行、请求头、空行和请求体...

    jquery 设置cookie、删除cookie、获取cookie

    - **Cookie 的安全性**:在涉及到敏感数据时,考虑使用 HTTPS 协议并为 Cookie 添加 `secure` 属性,以提高安全性。 - **Cookie 数量限制**:浏览器对单个域名下的 Cookie 数量有限制(通常为 50 个),注意不要超过...

    HTTP访问(带Cookie)模块.rar

    HTTP访问(带Cookie)模块是网络编程中一个关键部分,主要涉及如何在HTTP请求中处理Cookie,以便在客户端和服务器之间保持会话状态。在Web应用程序中,Cookie通常用于跟踪用户状态,如登录信息、购物车内容等。下面...

Global site tag (gtag.js) - Google Analytics