cookie

cookie

HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。

大纲

  • cookied的概念
  • cookie的应用场景
  • cookie的分类
  • cookie的内容
  • cookie的弊端

cookie概念

  • cookie是存储在客户端本地的文本文件中的一些数据
  • cookie是由服务器产生,之后发送刚给浏览器,然后由浏览器保存在客户端的某个文本文件里,下次请求同一网站浏览器会携带该cookie给服务器(前提是浏览器必须启用cookie)
  • cookie的存储形式:键值对 >> key=value
image.png

cookie的应用场景

当web服务器向客户端浏览器发送web页面时,在关闭连接后,服务器不会记住客户端的用户信息;
cookie的作用就是解决:服务端如何记录客户端的用户信息
当用户访问web页面时,将用户身份记录在cookie中;
用户在下一次访问页面时候,可以在cookie中获取到用户访问记录

实际场景:登录页面记住密码功能

image.png


cookie的分类

1.会话cookie

会话cookie指的是:没有设置过期时间的cookie

浏览器打开到关闭就是一次会话,当关闭浏览器时,会话cookie就会随着浏览器的关闭而销毁;会话cookie不存储在硬盘上而是保存在内存里,当然这种行为是并不是规范规定的

2.持久cookie

持久cookie指的是:设置了过期时间的cookie

浏览器打开之后,设置了过期时间的cookie就会保存到硬盘上;浏览器关闭之后再打开,cookie依然有效直至超过设置的过期时间。

  • 存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。
  • 保存在内存的cookie,不同的浏览器有不同的处理方式。

cookie的内容

服务器发送给浏览器的相关内容如下:

 Set-Cookie: 
    cookie_user_token=C5CBD6FBD0DA0EE4B5DC36E7075D8CDA;
    Expires=Thu, 06-Jul-2017 09:17:46 GMT; 
    domain= 119.29.100.135;
    Path=/;
    HttpOnly

name: cookie的名字 >> cookie_user_token
#属性由程序设定,默认值是空引用。Cookie一旦创建,名称便不可更改
value: cookie的值  >> C5CBD6FBD0DA0EE4B5DC36E7075D8CDA
#属性由程序设定,默认值是空引用。
#如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
domain: 域名,就是说这个Cookie对应哪一个域名有效    
#默认值为当前URL的域名部分,不管发出这个Cookie的页面在哪个目录下的;也可以由程序设置此属性为需要的值
#如果我们想让 www.china.com能够访问bbs.china.com设置的Cookie,该怎么办? 
#我们可以把domain属性设置成“.china.com”,并把path属性设置成“/”。
#Cookie具有不可跨域名性。即浏览器访问百度不会带上谷歌的Cookie;Cookie在客户端是由浏览器来管理的。
#浏览器能够保证Google只会操作Google的Cookie而不会操作Baidu的Cookie,从而保证用户的隐私安全。
#判断依据就是域名。
path:路径,默认值是根目录 >> "/"
#路径与域一起构成Cookie的作用范围
expires:cookie的有效期
HttpOnly 属性:安全方面的属性
#将一个Cookie设置为HttpOnly后,通过Javascript脚本将无法读取到Cookie信息,
#这能有效地防止黑客用XSS 发起攻击;一般来说,跟登录相关的 Cookie 必须设置为 HttpOnly

cookie的缺陷

1.数量受到限制

一个浏览器最多能创建300个cookie,并且每个cookie不超过4kb,很多浏览器都限制一个站点最多只能保存20个cookie

2.安全性无法保障

通常跨站点脚本攻击往往利用网站漏洞在网页中植入脚本代码,或网站页面引用第三方脚本代码,均存在跨站点脚本攻击的可能,在收到跨站脚本攻击时,脚本指令将会读取该站点所有的cookie内容(已不存在cookie作用域的限制),然后通过某种方式讲cookie的内容提交到指定的服务器,一旦cookie内容落入到攻击者手中,将会重现其价值

3.浏览器禁用cookie

  • 浏览器禁用cookie后,将无法使用cookie,无法享受cookie带来的便利
  • 浏览器对cookie有限制,不能手动设置cookie,对于混合嵌套的开发有问题,比如小程序跳转H5页面,不能携带cookie
  • 浏览器对单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。