`

HTTP协议之Cookie

阅读更多
Cookie是什么,有什么用,为什么要用到Cookie

Cookie 是小甜饼的意思,用于茶余饭后的小点心。
在程序中,就是一小段文本信息,写在 http 协议的 header 中,
由于 http 协议是无状态的,在http的每次请求和发生过程中,都带着 cookie

Request:
GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: theme=light; sessionToken=abc123
...


Response:
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
…


HTTP_cookie

请看Fish Li 写的【细说Cookie】
http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html


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后,就可以冒充别人的身份了。 这个过程我就不演示了。

[Web安全性测试之XSS]


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是一种小型的数据存储机制,主要用于在网络应用中...开发者需要关注HTTP协议中有关Cookie的规范,并根据实际需求合理设计Cookie管理逻辑。

    计算机后端-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访问(带Cookie)模块源码

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

    认清http协议本质

    要认清HTTP协议的本质,我们需要从以下几个关键点入手: 1. 请求与响应模型:HTTP通信基于请求-响应模型。客户端发起一个HTTP请求到服务器,服务器处理请求并返回一个HTTP响应。请求由方法(如GET、POST)、URL、...

    web技术之cookie讲解

    - Secure:如果设置为true,表示只有在HTTPS协议下,Cookie才会被发送到服务器。 在Java中,我们可以使用HttpServletResponse的addCookie方法来设置Cookie,如下所示: ```java Cookie cookie = new Cookie("name",...

    Cookie浏览器

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

    C#操作cookie,解密加密cookie

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

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

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

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

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

    C#cookie实现历史记录

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

    HTTP协议.zip_HTTP_HTTP协议

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

    HTTP协议详解_HTTP协议_

    HTTP协议的工作原理: 1. 请求过程:当用户在浏览器中输入URL并按下回车键时,浏览器作为客户端(Client)构造一个HTTP请求报文,包括方法(GET、POST等)、URL、协议版本、头部信息和请求主体(如果有的话)。然后...

    易语言取设cookie

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

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

    1. **无状态**:HTTP协议自身不维护连接状态,每次请求和响应都是独立的,服务器不会记住之前请求的信息。为了实现状态保持,开发者通常会使用Cookie或Session。 2. **简单快速**:设计时主要考虑快速传输,对数据...

    HTTP访问(带Cookie)模块.rar

    一、HTTP协议基础 HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从Web服务器传输超文本到本地浏览器。HTTP是无状态的,即每次请求之间不保留任何上下文信息。为了解决这个问题,Cookie被引入来...

    Cookie将用户名和密码加密后存在客户端的Cookie当中

    因此,在实际应用中还需要采取额外的安全措施,比如使用HTTPS协议、设置Cookie的`HttpOnly`属性以防止JavaScript脚本访问Cookie等。 #### 六、总结 通过在客户端的Cookie中存储加密后的用户名和密码,可以实现...

Global site tag (gtag.js) - Google Analytics