Cookie
Cookie的作用是管理服务器端和客户端之间状态,工作机制是用户识别和状态的管理,Web网站为了管理用户的状态会通过Web浏览器,把一些数据临时写入用户的计算机内,接着当用户访问改Web网站时,将存储的Cookie一并发送给服务器端,调用Cookie时,由于可以校验Cookie的有效期,以及发送方的域,路径,协议等信息,所以正规发布的Cookie内的数据不会因为来自其他Web站点和攻击者的攻击而泄露
Cookie服务的首部信息
首部字段 | 说明 | 首部类型 |
---|---|---|
Set-Cookie | 开始状态管理所使用的Cookie信息 | 响应首部字段 |
Cookie | 服务器端接受到的Cookie信息 | 请求首部字段 |
Set-Cookie
当服务器准备开始管理客户端状态时,会事先告知各种信息
属性 | 说明 |
---|---|
NAME=VALUE | 赋予Cookie的名称和值(必须) |
expires=DATE | Cookie的有效期(若不明确指定,则默认为浏览器关闭前为止,对与iOS而言则是应用关闭为止)一旦Cookie从服务器端发送至客户端,服务器端就不存在可以显示删除Cookie的方法,可以通过覆盖已过期的Cookie,实现对客户端Cookie的实质性删除 |
path=PATH | 将服务器上的文件目录作为Cookie的适用对象(若不指定则默认为文档当前所在文件目录)不过另外有办法可以避开这个限制,所有将其作为安全机制的效果不理想 |
domain=域名 | 作为Cookie适用对象的域名(若不指定则默认为创建Cookie的服务器的域名) |
Secure | 仅在HTTPS安全通信时才会发送Cookie 发送方式:Set-Cookie: name=xxx;secure 只有当HTTPS才会对Cookie进行回收,如果省略,不论HTTP还是HTTPS都会回收 |
HttpOnly | 加以限制,使Cookie不能被JavaScript脚本访问(主要目的是为防止跨站脚本攻击对Cookie信息的窃取) 也就是说通过document.cookie 无法读取附加 HttpOnly属性Cookie的内容了,因此,也就无法在XSS中利用JavaScript劫持Cookie了 |
Cookie
首部字段Cookie会告知服务器,当客户端想获得HTTP状态管理时,就会在请求中包含从服务器接收到的Cookie,接收到多个Cookie时,同样也可以以多个Cookie的形式发送。