(chap6 Http首部) 为Cookie服务的首部字段
Cookie的工作機制是用戶識別及狀態管理。Web 網站為了管理用戶的狀態會通過Web瀏覽器,把一些數據臨時寫入用戶的計算機內。接著當用戶訪問該Web網站時,可通過通信方式取回之前發放的Cookie。
調用Cookie時,由于可校驗Cookie的有效期,以及發送方的域、路徑、協議等信息,所以正規發布的Cookie內的數據不會因來自其他web站點和攻擊者的攻擊而泄露。
管理服務器與客戶端之間狀態的Cookie,雖然沒有被編入標準化HTTP/1.1的 RFC2616中,但在Web 網站方面得到了廣泛的應用。
1. 為Cookie服務的首部字段
2.Set-Cookie
當服務器準備開始管理客戶端的狀態時,會事先告知各種信息。
eg.
Set-Cookie: status=enable;expre= Tue,05 july 2011 07:32:26 GMT;path=/;domain.havk.jp;2.1 Set-Cookie的字段屬性
| NAME=VALUE | 賦予Cookie的名稱和其值(必須項) |
| expire=DATE | Cookie的有效期(若不指明則默認為瀏覽器關閉之前) |
| path=PATH | 用于限制指定Cookie的發送范圍的文檔目錄(若不制指定默認為文檔所在的文件目錄) |
| Domain | 指定的域名可做到與結尾匹配一致 |
| Secure | 僅在HTTPS安全通信時才發送cookie |
| HttpOnly | 加以限制,使Cooki不能被Javascript腳本訪問 |
-
expires屬性
Cookie的expires屬性指定瀏覽器可發送Cookie的有效期。
當省略expires屬性時,其有效期僅限于維持瀏覽器會話( Session )時間段內。這通常限于瀏覽器應用程序被關閉之前。
另外,一旦 Cookie從服務器端發送至客戶端,服務器端就不存在可以顯式刪除Cookie的方法。但可通過覆蓋已過期的Cookie,實現對客戶端Cookie的實質性刪除操作。 -
path屬性
Cookie 的 path屬性可用于限制指定Cookie的發送范圍的文件目錄。不過另有辦法可避開這項限制,看來對其作為安全機制的效果不能抱有期待。 -
domain屬性
通過Cookie 的domain屬性指定的域名可做到與結尾匹配一致。比如,當指定example.com后,除example.com 以外,www.example.com或www2.example.com等都可以發送Cookie。
因此,除了針對具體指定的多個域名發送Cookie之外,不指定domain屬性顯得更安全。 -
secure屬性
eg. Set-Cookie: name=value; secure
Cookie的 secure屬性用于限制 Web頁面僅在HTTPS安全連接時,才可以發送Cookie。
發送Cookie時,指定secure屬性的方法如下所示。以上例子僅當在https : //www.example.com/ ( HTTPS)安全連接的情況下才會進行Cookie的回收。也就是說,即使域名相同,http://www.example.com/( HTTP)也不會發生Cookie回收行為。
當省略secure屬性時,不論HTTP還是HTTPS,都會對Cookie進行回收。 -
HttpOnly屬性
Cookie的 HttpOnly屬性是Cookie的擴展功能,它使JavaScript腳本無法獲得Cookie。其主要目的為防止跨站腳本攻擊(Cross-sitescripting,XSS)對Cookie的信息竊取。
發送指定 HttpOnly屬性的Cookie的方法如下所示。
eg. set-Cookie: name=value; Httponly通過上述設置,通常從 Web頁面內還可以對Cookie進行讀取操作。但使用JavaScript 的 document.cookie就無法讀取附加HttpOnly屬性后的Cookie的內容了。因此,也就無法在XSS中利用JavaScript劫持Cookie了。
雖然是獨立的擴展功能,但 Internet Explorer 6 SP1以上版本等當下的主流瀏覽器都已經支持該擴展了。另外順帶一提,該擴展并非是為了防止XSS而開發的。
2.2 Cookie
Cookie:status=enable首部字段Cookie會告知服務器,當客戶端想獲得HTTP狀態管理支持時,就會在請求中包含從服務器接收到的Cookie。接收到多個Cookie時,同樣可以以多個Cookie形式發送。
總結
以上是生活随笔為你收集整理的(chap6 Http首部) 为Cookie服务的首部字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (chap6 Http首部) 响应
- 下一篇: (chap1 网络基础知识)一些概念