cookie是什么东西?

cookie这个词我们日常经常提起,就算不是程序员,我们日常优化清理电脑使用某些软件的时候总会遇到清除cookie之类的吧!那么cookie究竟是什么呢?让我们一起认识一下吧。

cookie (存储在用户本地终端上的数据)

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109和2965都已废弃,最新取代的规范是RFC6265。

基本信息

Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。

Cookie是有服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就会发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

主要用途

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookie最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

生存周期

Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

识别功能

如果在一台计算机中安装多个浏览器,每个浏览器都会在各自独立的空间存放cookie。因为cookie中不但可以确认用户,还能包含计算机和浏览器的信息,所以一个用户不同的浏览器登录或者用不同的计算机登录,都会得到不同的cookie信息,另一方面,对于在同一台计算机上使用同一浏览器的多用户群,cookie不会区分他们的身份,除非他们使用不同的用户名登录。

一些人反对cookie在网络中的应用,他们的理由如下:

1.识别不精确

2.隐私,安全和广告

脚本攻击

尽管cookie没有病毒那么危险,但它仍包含了一些敏感信息:用户名,计算机名,使用的浏览器和曾经访问的网站。用户不希望这些内容泄露出去,尤其是当其中还包含有私人信息的时候。

这并非危言耸听,一种名为跨站点脚本攻击(Cross site scripting)可以达到此目的。通常跨站点脚本攻击往往利用网站漏洞在网站页面中植入脚本代码或网站页面引用第三方法脚本代码,均存在跨站点脚本攻击的可能,在受到跨站点脚本攻击时,脚本指令将会读取当前站点的所有Cookie内容(已不存在Cookie作用域限制),然后通过某种方式将Cookie内容提交到指定的服务器(入:AJAX)。一旦Cookie落入攻击者手中,他将会重现器价值。

  建议开发人员在向客户端Cookie输出敏感的内容时(譬如:该内容能识别用户身份):

  1)设置该Cookie不能被脚本读取,这样在一定程度上解决上述问题。

  2)对Cookie内容进行加密,在加密前潜入时间戳,保证每次加密后的文件都不一样(兵器可以防止消息重放)。

  3) 客户端请求时,每次或定时更新Cookie内容(即:基于第2小条,重新加密)

  4)每次向Cookie写入时间戳,数据库需要记录最后一次时间戳(防止Cookie篡改,或重放攻击)。

  5)客户端提交Cookie时,先揭秘然后校验时间戳,时间戳若小于数据库中记录,即意味发生攻击。

  基于上述建议,即使Cookie被劫取,却因Cookie被随即更新,且内容无规律性,攻击者无法加以利用。另外利用了时间戳另一大好处就是防止Cookie篡改或重放。

  Cookie 窃取:搜集用户cookie并发给攻击者的黑客。攻击者将利用cookie信息通过合法手段进入用户账户。

  Cookie 篡改:利用安全机制,攻击者加入代码从而改写Cookie内容,以便持续攻击。

具体含义

cookie 历来指就着牛奶一起吃的电信。然而,在因特网内,“cookie”这个字有了完全不同的意思。那么“cookie”到底是什么呢?“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie是个存储在浏览器目录的文本文件,当浏览器运行时,存储在RAM中。一旦阁下从该网站或网络服务器退出,Cookie也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有cookie。

原文地址:https://www.cnblogs.com/dylanblog/p/3552403.html