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协议(3) - Cookie

    不惧面试:HTTP协议(3) - Cookie 阅读目录 面试常见题: 参考答案: v博客前言 先交代下背景,写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网 ...

  2. http协议、cookie及session

    1. HTTP协议是无连接的 网页操作--浏览器--Http协议--web服务器(appache/IIS) 无连接的 每次连接只处理一个请求,服务器处理完并收到客户端应答,即断开连接 目的:节省传输时 ...

  3. http协议、cookie与session介绍

    一.HTTP(hypertext transport protocol) 超文本传输协议,详细规定了浏览器和万维网服务器之间互相通信的规则,即规定客户端发送给服务器的内容格式,也规定了服务器发送给客户 ...

  4. 网络协议——七层、五层、四层协议概念

    普及一篇网络协议基础知识. 一.7层 7层是指OSI七层协议模型,主要是:应用层(Application).表示层(Presentation).会话层(Session).传输层(Transport). ...

  5. 网络协议——七层、五层、四层协议概念及功能分析

    一.7层 7层是指OSI七层协议模型,主要是:应用层(Application).表示层(Presentation).会话层(Session).传输层(Transport).网络层(Network).数 ...

  6. HTTP协议,Cookie和Session

    第一节  HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有WWW文件都必须遵守这个标准.设计HTTP最初的目的 ...

  7. DW-CHEN的Java点滴记录JavaWeb之HTTP协议/Servlet/Cookie/Session/JSP/EL/JSTL/Filter/Listener

    JavaEE规范 JavaEE(Java Enterprise Edition):Java企业版,早期叫J2EE(J2EE的版本从1.0到1.4结束):现在Java版本从JavaEE 5开始 Java ...

  8. JavaWeb(七)——Cookie、Session

    文章目录 1. 会话 2. 保存会话的两种技术 3. Cookie 4. Session(重点) 1. 会话 会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称 ...

  9. 3-5:HTTP协议之Cookie和Session

    文章目录 一:Cookie和Session A:Cookie B:Session C:Cookie和Session对比 一:Cookie和Session A:Cookie 前面说过,HTTP的一个特点 ...

最新文章

  1. 某程序员遭遇奇葩事:辞退自己的leader竟然命令自己回前公司,给前同事讲代码!...
  2. mysql 一键获取数据库表结构
  3. [游戏引擎中文版]YU-RIS 4.5 最新中文支持版
  4. 后台接收数组_微信小程序如何与后台api接口进行数据交互(微信报修小程序源码讲解七)...
  5. python xpath定位元素方法_Python爬虫杂记 - Xpath高级用法
  6. NetCore 依赖注入之服务之间的依赖关系
  7. 项目中CI缓存适配器的使用
  8. 最新容器项目 Kata 曝光
  9. RazorSQL for Mac:查看和编辑二进制数据和图像
  10. mysql建用户注册登录表_登录注册数据库建立
  11. ad软件画pcb方法总结_AD软件中导入BRD的PCB文件总结分享,,,,
  12. JWT全面解读、使用步骤
  13. SAN 光纤交换机配置远距离级联(EF)操作
  14. php获取图片格式(图片后缀)
  15. 联想y50更换固态硬盘_【联想Y50-70】更换固态硬盘,极速开机~
  16. 如何更改VS的项目名字
  17. 汇编语言基础入门知识
  18. 前端微信签名验证工具_微信JS接口签名的生成
  19. SPI协议主机verilog
  20. 会声会影x4素材_会声会影2020旗舰版Corel VideoStudio Ultimate 2020中文版

热门文章

  1. 热更新_热更新必懂3件事
  2. Scrapy 调用chrome浏览器的middleware
  3. [LeetCode] Z字型变换
  4. java和js实现电话号码部分隐藏
  5. Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)...
  6. 编程语言-jul2014
  7. juc原子类之五:AtomicLongFieldUpdater原子类
  8. 电子之嵌入式主流芯片浏览
  9. c#中怎么禁用和开启无线网卡?
  10. 同一用户最新登录踢掉历史登录【原创】