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