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的形式發送。