目录

什么叫Cookie

Cookie的类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 ,通俗来讲就是指缓存数据,包括用户名、密码、注册账户、手机号等公民个人信息。

一、Cookie概念

Cookie是保存在计算机上的一种文件。当我们使用计算机浏览网页时,服务器会生成一个证书并将其返回给我们的计算机。这个证书是cookie。一般来说,cookie是服务器写给客户端的文件,也可以称为浏览器缓存。

简单来说,它可以读取并保存你访问网站时产生的一些行为信息,这些信息通常是加密的,否则会侵犯用户的隐私。Cookie也可以帮助加快第二次拜访。通常,当我们访问一些网页时,系统会提示我们是否要保存用户名和密码。下次登录时,我们可以自动登录,无需再次登录。

二、Cookie的优缺点

1、优点:

如果没有Cookie的存在,网络对于我们来说不会如此便捷。它存储着你的网站登录信息,如果没有他们,你将不能够登陆网站。网站通过Cookie信息来记忆以及辨认你的帐号,它可以记忆你的偏好设置。它还可以使网站提供个性化的内容,举个例子,如果你在淘宝上购物,淘宝可以记忆你所查看过的产品并据此来向你来推荐商品,即便你没有登陆个人帐号。

2、缺点:

伴随着互联网巨大商机的出现,Cookie也从一项服务性工具变成了一个可以带来巨大财富的工具。部分站点利用Cookie收集大量用户信息,并将这些信息转手卖给其他有商业目的的站点或组织,如网络广告商等,从中牟利。使用Cookie技术,您在浏览Web站点时,不论是否愿意,您的每一个X作都有可能被记录下来,在毫无防备的情况下,您正在浏览的网站地址、使用的计算机的软硬件配置,甚至您的名字、电子邮件地址都有可能被收集并转手出售。随着互联网的商业化发展,该问题越来越严重,个人隐私的泄露所带来的并不单纯是一些垃圾邮件,一旦个人资料被滥用,信用卡密码被盗,后果不堪设想。也正因为如此,有关Cookie的争论从未停止过,用户对Cookie的态度也是爱恨交加。

三、Cookie的属性

  1. Name:Cookie名
  2. Value:Cookie值
  3. Domain:Cookie的域。如果设成.test.com,那么子域名a.test.com和b.test.com,都可以使用.test.com的Cookie。
  4. Path:Cookie的路径。如果设成/path/,则只有路径为/path/的页面可以访问该Cookie。如果设为/,则本域名下的所有页面都可以访问该Cookie。
  5. Expires / Max-Age:Cookie的超时时间。若设置其值为一个时间,那么当到达此时间后,此Cookie失效。不设置的话默认值是Session,意思是Cookie会和Session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器)后,此Cookie失效。
  6. Size:Cookie大小。
  7. HttpOnly:若此属性为true,则只有在http请求头中会带有此Cookie的信息,而不能通过document.cookie来访问此Cookie。
  8. Secure:设置是否只能通过https来传递此条Cookie。
  9. SameSite:用来防止 CSRF 攻击和用户追踪,可以设置三个值:Strict、Lax 和 None。
    • Strict:Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。
    • Lax:Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。
    • None:关闭SameSite属性,提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。
  10. Priority:优先级。定义了三种优先级,Low/Medium/High,当Cookie数量超出时,低优先级的Cookie会被优先清除。

延伸阅读1:cookie的安全问题

自从cookie技术诞生以来,它就成为了网络用户和网络开发者争论的焦点。一些网络用户,甚至一些资深的Web专家,对它的出现和推广并不满意,不是因为Cookie技术的功能弱或者其他技术性能原因,而是因为Cookie的使用对网络用户的隐私造成了危害。因为Cookie是由网络服务器保存在用户浏览器上的小文本文件,所以它们包含关于用户的信息。

一站式研发项目管理平台 PingCode

一站式研发项目管理平台 PingCode

支持敏捷\瀑布、知识库、迭代计划&跟踪、需求、缺陷、测试管理,同时满足非研发团队的流程规划、项目管理和在线办公需要。