#HTTP协议学习# (七)cookie

本文转自:http://www.cnblogs.com/TankXiao/archive/2012/12/12/2794160.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是由全球资讯联盟网 所开发的。

转载于:https://www.cnblogs.com/xu-xiao/articles/6408495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的类型~存储~变量

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天在群里看到朋友讨论把粉丝称为读者,这让我内心特别激动。以前我还是比较关注自己的文章阅读量,有没有人转发,今天新增多少个关注。而现在,我的关注点变了&…

C++之typename

1、typename和class 在模板前,typename和class没有区别 template<typename T> class A; template<class T> class A;typename和class对编译器而言却是不同的东西 2、声明一个类型 看下面的代码 我们编译下结果如下 编译器不知道T::const_iterator是个类型。如果…

mooc数据结构与算法python版期末考试_数据结构与算法Python版-中国大学mooc-试题题目及答案...

数据结构与算法Python版-中国大学mooc-试题题目及答案更多相关问题婴儿出生一两天后就有笑的反应&#xff0c;这种笑的反应属于()。【判断题】填制原始凭证&#xff0c;汉字大写金额数字一律用正楷或草书书写&#xff0c;汉字大写金额数字到元位或角位为止的&#xff0c;后面必…

使用 NetCoreBeauty 优化 .NET CORE 独立部署目录结构

在将一个 .NET CORE \ .NET 5.0 \ .NET 6.0 程序进行独立部署发布时&#xff0c;会在发布目录产生很多系统类库&#xff0c;导致目录非常不简洁。这给寻找入口程序造成了困难&#xff0c;特别是路遥工具箱这种绿色软件&#xff0c;不会在开始菜单、系统桌面创建快捷方式&#x…

ios之最简单的程序

1、构建学生对象并且打印相关信息 代码&#xff1a;#import <UIKit/UIKit.h> #import "AppDelegate.h"interface Student : NSObject //变量 property NSString *name; property int age; property float score;//method -(void)show;endimplementation Studen…

网站前端_EasyUI.基础入门.0009.使用EasyUI Layout组件的最佳姿势?

1. 基础布局<div id"l" class"easyui-layout" data-options"width:500,height:250"><div data-options"region:north,title:north,height:50"></div><div data-options"region:west,title:west,width:100&q…

MySQL数据库如何管理与维护_mysql数据库的管理与维护

mysql数据库的管理与维护云服务器(Elastic Compute Service&#xff0c;简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源一样…

[转载]Javascript异步编程的4种方法

NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中&#xff0c;使用“回调”是最常见的。 其实还有其他4种实现异步的方法&#xff1a; 在此以做记录 --- http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html --- 你可能知道&am…

继 SpringBoot 3.0,Elasticsearch8.0 官宣:拥抱 Java 17

大家好&#xff0c;我是君哥。新版任你发&#xff0c;我用 Java 8&#xff0c;这可能是当下 Java 开发者的真实写照。不过时代可能真的要抛弃 Java 8&#xff0c;全面拥抱 Java 17 了。Spring Boot 3.0前些天&#xff0c;相信小伙伴们都注意到了&#xff0c;SpringBoot 发布了 …

文件下载

2019独角兽企业重金招聘Python工程师标准>>> public String downloadFile() {try {if (id ! null && !"".equals(id) && !"null".equals(id)) {ResourceFile rf resourceFile.getResourceFile(id);filename new String(rf.ge…

ios之Xcode工程中添加文件常用快捷键

1、Xcode某个工程中添加文件 有两种方式&#xff1a; 方式一&#xff1a;“command”&#xff0b;“n”&#xff0c;弹出添加文件对话框。 方式二&#xff1a;在需要添加文件的工程目录下右键&#xff0c;选择“New File…”。 以上方式Xcode会弹出下面的对话框&#xff1…

想说爱你不容易 | 使用最小 WEB API 实现文件上传(Swagger 支持)

前言上回&#xff0c;我们使用最小 WEB API 实现文件上传功能&#xff08;《想说爱你不容易 | 使用最小 WEB API 实现文件上传》&#xff09;&#xff0c;虽然客户端访问是正常的&#xff0c;但是当打开 Swagger 页面时&#xff0c;发现是这样的&#xff1a;没法使用 Swagger 页…

sql多表查询之一:Where 和 On的秘密

原文 sql多表查询之一&#xff1a;Where 和 On的秘密 对于还在SQL初级阶段的朋友来说&#xff0c;sql多表查询问题是一个比较有趣也容易出错的技术。什么时候会用到sql多表查询呢&#xff1f;是在两张或两张以上表单中通过某几个字段进行互联管理的时候&#xff0c;这就不得不说…

C#中类的override和virtual

欢迎您成为我的读者&#xff0c;希望这篇文章能给你一些帮助。前言昨天和大家一起学习类的派生&#xff0c;知道派生类和基类的区别。今天咱们一起看看派生类和基类的虚方法和覆写方法是如何使用的。我们使用基类引用访问派生类对象时&#xff0c;得到的是基类的成员。当使用虚…

内存中压缩图片

首先该文章是总结, 不是原创, 是通过看网上其他大神的文章和自己的一些实践总结出来的.一.图片的存在形式1.文件形式(即以二进制形式存在于硬盘上)2.流的形式(即以二进制形式存在于内存中)3.Bitmap形式这三种形式的区别: 文件形式和流的形式对图片体积大小并没有影响,也就是说,…

使用C# 探索 ML.NET 中的不同机器学习任务

什么是 ML.NET&#xff1f;ML.NET 是 Microsoft 开源的针对 .NET 应用程序的 跨平台机器学习库&#xff0c;允许您使用 C#、F# 或任何其他 .NET 语言执行机器学习任务。此外&#xff0c;ML.NET 支持在其他机器学习框架中构建的模型&#xff0c;如TensorFlow&#xff0c;ONNX&am…

【JavaWeb学习笔记】15 - jQuery

目录 零、官方文档 一、jQuery基本介绍 1.基本介绍 2.原理图 二、JQuery入门使用 1.下载JQuery 2.jQuery快速入门 三、jQuery对象 1.什么是jQuery对象? 2.DOM对象转换成jQuery对象 3.jQuery对象转成DOM对象 四、jQuery选择器 1.jQuery选择器介绍 2.基本选择器 3…

转义字符

2019独角兽企业重金招聘Python工程师标准>>> &quot; 这是HTML语言中的表示引号&#xff08;"&#xff09;的字符实体 常用表&#xff1a; No.文字表記10進表記16進表記文字 Comment001&quot;&#x22;""" quotation mark APL quote0…

JSP使用JSON传递数据,注意避免中文乱码

JSP传递数据时不方便使用Java中的对象类型&#xff0c;一般使用JSON来传递对象。 在使用JSON时&#xff0c;前端js如下&#xff0c;注意指定dataType&#xff1a; var htmlobj $.ajax({ url:"chat.do",type:"POST", data:{sayingContent:$("#textarea…

【求助】AIX5.3主机下 memcached的内存使用异常

2019独角兽企业重金招聘Python工程师标准>>> AIX5.3主机下 memcached 内存增长到256M后&#xff0c;就不增长了&#xff08;实际启动时设置的内存>2G&#xff09;&#xff1b; 测试发现在windows、Linux DLXEL02 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT…