相信大家在使用诸如360安全卫士这样的管理软件时(如下图),或在使用浏览器时,常会见到一个名词——cookies.那么cookies到底是什么呢?
简言之,cookies是指某些网站为了辨别用户身份而存储在用户本地终端上的数据。那么为什么需要这样的数据呢?这就涉及到HTTP协议。它具有的特点之一是无状态,即同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息。这样一来,这一特性就严重阻碍了交互式Web应用程序的实现。如维基百科上所举的解释:在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。 所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取cookies中包含信息,借此维护用户跟服务器会话中的状态。
那么为什么360安全卫士还要情理这些cookies呢?因为在HTTP请求中的cookie是明文传递的,所以cookies在某种程度上说已经严重危及用户的隐私和安全,这也是便捷与安全直接矛盾的又一体现。
具体到cookies与用户认证之间的关系上,在初始登录中,当服务器通过自己选择的认证方法进行认证时,根据自身需要将不同形式的认证标记写入cookie,发送给客户端,客户端根据服务器的要求或者将此cookie存储在浏览器内存中,或者将Cookie以文件的方式存储到客户端计算机。在后续操作中认证标记即成为客户身份的唯一标记符,任何拥有有效标记符的客户即被认为是合法的,可访问server上相应的资源。当客户要访问Cookie中标记的服务器资源时,浏览器将自动搜索对应Cookie,将其和请求内容一起发送给server,server验证Cookie中的认证标记,若合法,则将客户请求的内容发送给客户,若不合法,则拒绝。
简言之,cookies在带来友好与便捷的同时,也存在着隐患。全面了解它正是我们合理使用它的前提。